Re: [問題]用C#寫筆記本的問題
※ 引述《APee0509 (阿皮)》之銘言:
: 問題一:
: 記事本的儲存檔案第一次就像另存新檔的模式存檔
: 但如果第二次再按一次儲存檔案則會直接存檔並覆蓋前一次的檔案
: 這要怎麼寫呢??
用 string openFile = null;
來記錄現在開啟的檔案路徑,
new file 時 => openFile = null;
save或open file時 => openFile = 存檔或開檔的路徑
按下save時, openFile==null => 跳出另存
else => 存入 openFile
: 問題四:
: 如何得知游標位置在第幾行第幾列?
目前.NET沒提供. 要不自己寫, 要不WinAPI有方法可以做..
自己寫的話, 用 TextBox.SelectionStart 取得現在游標 (caret) 的index位置..
再用for去計算有幾個 \n 就可以知道在第幾line, 再用 SelectionStart扣掉
最後一個 \n 的index就知道column的位置..
用winapi的話, 用 SendMessage 送 EM_LINEFROMCHAR=0xC9和EM_LINEINDEX=0xBB
兩個訊息可可以了..(其實和自己寫的道理是一樣的..)
uint line = SendMessage(textBox1.Handle, EM_LINEFROMCHAR, -1, 0);
uint col = SendMessage(textBox1.Handle, EM_LINEINDEX, -1, 0);
‧上面的第三個參數(-1)原本是傳字元index或行號的值..
-1是指 current 的位置, 所以簡寫-1就行了..
‧SendMessage是WinAPI, 要用DllImport引入作p/invoke..
‧所以你的 line數就是 line
col是該line的index值, 所以 SelectionStart-col才是行號..
‧以上兩種方法都寫在 KeyPress和KeyUp裡
: 問題五:
: 我有開起狀態列,但我的狀態列都會蓋住我的橫軸的捲軸 有辦法避免嗎??
你應該是先放了 TextBox(設成Dock.Fill)才放StatusStrip(或StatusBar)吧?
因為這樣的z-order錯了, 所以才會被狀態列蓋到.
選住你的TextBox, 右鍵->Bring To Front就可以了~
: 問題六:
: 如何偵測到文字有反白,然後讓複製、剪下等的按鍵便成可以按??
: 並且要寫再哪一個的控制項下呢??
我的話, 會寫在 KeyUp和MouseUp裡面@.@a
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.144.6
※ 編輯: cole945 來自: 220.139.144.6 (06/11 15:40)
→
06/11 15:56, , 1F
06/11 15:56, 1F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章