Re: [問題]用C#寫筆記本的問題

看板C_Sharp (C#)作者 (躂躂..)時間18年前 (2007/06/11 15:31), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/6 (看更多)
※ 引述《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
文章代碼(AID): #16RFfgLZ (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #16RFfgLZ (C_Sharp)