WinForm开发中,我使用了一个控件RichTextBox,我在此控件的OnMouseDown事件中这样来获得鼠标焦点:
int intCharIndex = this.GetCharIndexFromPosition(new Point(e.X, e.Y));
假如RichTextBox里面的内容是 abcd
1.如果我把鼠标点击在a之前,则函数得到的intCharIndex 是0。
2.如果我把鼠标点击在a与b之间,则函数得到的intCharIndex 是1。
3.如果我把鼠标点击在b与c之间,则函数得到的intCharIndex 是2。
4.如果我把鼠标点击在c与d之间,则函数得到的intCharIndex 是3。
问题:
如果我把鼠标点击在d之后,则函数得到的intCharIndex 仍旧是3。
我的本意是,如果把鼠标点击在d之后,要得到4。这个问题怎么解决?
int intCharIndex = this.GetCharIndexFromPosition(new Point(e.X, e.Y));
假如RichTextBox里面的内容是 abcd
1.如果我把鼠标点击在a之前,则函数得到的intCharIndex 是0。
2.如果我把鼠标点击在a与b之间,则函数得到的intCharIndex 是1。
3.如果我把鼠标点击在b与c之间,则函数得到的intCharIndex 是2。
4.如果我把鼠标点击在c与d之间,则函数得到的intCharIndex 是3。
问题:
如果我把鼠标点击在d之后,则函数得到的intCharIndex 仍旧是3。
我的本意是,如果把鼠标点击在d之后,要得到4。这个问题怎么解决?
解决方案 »
- AspxGridView控件中,编辑模式下,只想编辑部分字段,其余的字段只显示不可编辑怎么办啊??求大神
- DOTNET三层框架
- [请教]如何从画面{快速}取得所有的控件
- 请问用C#如何写一个流媒体播放器
- 网页数据分析 ---https
- 关于如何不让3721屏蔽页面的问题
- 这样存储过程这么写?急!!!!
- winform下如何让子控件响应父控件的鼠标事件
- 我想问下,我打开一个文件,对文件里进行了修改,然后准备保存,但是我的保存必须保存在原文件原路径原名字
- 我导出word时的问题,求大哥大姐们帮帮忙
- 如何將水晶報表或Reporting Service報表轉換成.doc或pdf文檔格式(C#)
- 有关datareader问题
GetCharIndexFromPosition只能得到最后的字符的位置
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam,
ref Point lParam);
public const uint EM_CHARFROMPOS = 215;private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
int X = Math.Min(Math.Max(e.X, 0), ((RichTextBox)sender).ClientSize.Width);
int Y = Math.Min(Math.Max(e.Y, 0), ((RichTextBox)sender).ClientSize.Height);
Point vPoint = new Point(X, Y);
int intCharIndex = 0x0000FFFF &
SendMessage(((RichTextBox)sender).Handle, EM_CHARFROMPOS, 0,
ref vPoint); Text = string.Format("{0},{1}", intCharIndex,
((RichTextBox)sender).GetCharIndexFromPosition(new Point(e.X, e.Y)));
}