作者cole945 (躂躂..)
看板C_Sharp
标题Re: [问题]用C#写笔记本的问题
时间Mon Jun 11 15:31:53 2007
※ 引述《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)
1F:→ APee0509:感恩^^ 06/11 15:56