[C#求助]如何实现在richtextbox中获取当前光标位置?~~~急啊~~~ 最近在实现记事本的状态栏(能动态获取当前光标位置,就是能显示现在光标在文本中第几行,第几列)。一开始用KeyDown来实现,但感觉情况太多,不是最好的解决办法。于是想到应该有一种动态获取当前光标位置的方法,才是最好的解决办法。请高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 richtextbox中能获取吗?应该是在窗体中获取吧。 RichText貌似不能,建议换控件才能做到。 ref:http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c89c.aspx#q890q public static Point GetCurrentPosition(TextBoxBase editControl) { int charIndex = (int)SendMessage(editControl.Handle, EM_LINEINDEX, -1, 0); int lineIndex = (int)SendMessage(editControl.Handle, EM_LINEFROMCHAR, charIndex, 0); return new Point(editControl.SelectionStart - charIndex, lineIndex); } 谢谢大家,这个问题解决了,用了一个timer控件,在timer的Tick事件里实现。int begin = 0;int fronting = richText.SelectionStart;row = richText.GetLineFromCharIndex(richText.SelectionStart); while (begin < fronting) { if (row == richText.GetLineFromCharIndex(begin)) //richTextBox的GetLineFormCharIndex()方法,获取行号 { break; } else { begin++; } } field = fronting - begin;row++;field++; staHang.Text = "行"+" "+row;staLie.Text = "列"+" "+field; 在SelectionChanged里获取即可,不必用timer up !lz 解决方法不错,不过最好不要timer 触发,可以改为 控件区域鼠标事件触发那样更合理一点 关于webservice的问题 C# 谈谈你对多层架构的认识 关于时间的转换 C#中连接sqlserver 当查询分析器没有登录名和密码的时候,要怎样连接,谢谢 sql 用存储过程实现取分隔符间的数据???? c#連接SQL Server的問題 C#里是怎么给类(比如form)添加重载方法的? SetToolTip怎么不能绑定notifyIcon控件 请问什么是MIS啊? ListView的深层应用. 类型之间的转换错误 能不能取得 连上我网站的电脑上的 U盘的信息(假如他插了的话。)
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c89c.aspx#q890q
{
int charIndex = (int)SendMessage(editControl.Handle, EM_LINEINDEX, -1, 0);
int lineIndex = (int)SendMessage(editControl.Handle, EM_LINEFROMCHAR, charIndex, 0);
return new Point(editControl.SelectionStart - charIndex, lineIndex);
}
int begin = 0;
int fronting = richText.SelectionStart;
row = richText.GetLineFromCharIndex(richText.SelectionStart);
while (begin < fronting)
{
if (row == richText.GetLineFromCharIndex(begin)) //richTextBox的GetLineFormCharIndex()方法,获取行号
{
break;
}
else
{
begin++;
}
}
field = fronting - begin;
row++;
field++;
staHang.Text = "行"+" "+row;
staLie.Text = "列"+" "+field;
可以改为 控件区域鼠标事件触发那样更合理一点