如何获取TextBox中光标位置?

hejialin666 2010-03-16 04:33:15
注意,是光标位置,不是鼠标位置。
网上看到了一些办法,都是把获取位置的方法放在了MouseDown事件里了,可是当用户再输入文本后,MouseDown事件中获取的光标位置就滞后了,不是当前的位置了。
请问高手怎么获取到光标在TextBox文本中的位置?
...全文
563 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongke_hsc 2010-06-09
  • 打赏
  • 举报
回复
哎哟 不错啊
hejialin666 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhanshaowei 的回复:]
楼主 发一下 程序。让我看看!
[/Quote]
程序写在这里了,你看看吧
http://blog.csdn.net/hejialin666/archive/2010/03/17/5387532.aspx
zhanshaowei 2010-06-08
  • 打赏
  • 举报
回复
楼主 发一下 程序。让我看看!
lzsh0622 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cjcgy 的回复:]
你输入的时候看下它的值。
Length为0
[/Quote]

是SelectionStart  不是length
lzsh0622 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hejialin666 的回复:]
当用户输入文本时有选择这个动作吗?
就是你在写回帖时你用鼠标选择文本了吗?
[/Quote]

不一定选择,只是当前光标的定位启始点.

输入、点击时都会改变。
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
KeyUp事件和SelectionStart结合用,很好,解决问题!
谢谢大家!
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
KeyUp事件更好!哈哈!随时获取坐标值
cjcgy 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hejialin666 的回复:]

引用 6 楼 cjcgy 的回复:
那个值本来就是实时的~~~

SelectionStart
SelectionLength
这两个属性在MSDN解释都是“选定的文本~~~”

当用户输入文本时有选择这个动作吗?
就是你在写回帖时你用鼠标选择文本了吗?
[/Quote]

你输入的时候看下它的值。
Length为0
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qldsrx 的回复:]
你可以再添加一个KeyDown事件,能够改变光标位置的无非就是鼠标事件和键盘事件了,你两个都捕获就没问题了。
[/Quote]
我试了一下
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangrui0610 的回复:]
路过...

用定时器可以不.
[/Quote]
Timer?也许是个方法,我也想到了,实现了实时的效果,可是实时获取光标坐标的这方法怎么写?
qldsrx 2010-03-16
  • 打赏
  • 举报
回复
你可以再添加一个KeyDown事件,能够改变光标位置的无非就是鼠标事件和键盘事件了,你两个都捕获就没问题了。
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cjcgy 的回复:]
那个值本来就是实时的~~~
[/Quote]
SelectionStart
SelectionLength
这两个属性在MSDN解释都是“选定的文本~~~”

当用户输入文本时有选择这个动作吗?
就是你在写回帖时你用鼠标选择文本了吗?
大笨蛋 2010-03-16
  • 打赏
  • 举报
回复
路过...

用定时器可以不.
cjcgy 2010-03-16
  • 打赏
  • 举报
回复
那个值本来就是实时的~~~
hejialin666 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzsh0622 的回复:]
C# code

//设置光标位置
private void button1_Click(object sender, EventArgs e)
{
textBox1.SelectionStart = 2;
textBox1.Focus();
}

// 取得光标位置
private void button2_Click(object sender, Event……
[/Quote]
当用户写文本时就没有鼠标点击事件了,可是光标位置变化了,这个值怎么获得?
难道要用户每次输入完都要点一下鼠标吗?
lzsh0622 2010-03-16
  • 打赏
  • 举报
回复

//设置光标位置
private void button1_Click(object sender, EventArgs e)
{
textBox1.SelectionStart = 2;
textBox1.Focus();
}

// 取得光标位置
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(textBox1.SelectionStart.ToString());
}

hejialin666 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cjcgy 的回复:]
有专门的属性的。
[/Quote]

你说的是SelectionStart吗?这个写在什么事件里?要获取当前位置,随时变化的。
cjcgy 2010-03-16
  • 打赏
  • 举报
回复
SelectionStart
SelectionLength
这两个属性可以满足要求了。
cjcgy 2010-03-16
  • 打赏
  • 举报
回复
有专门的属性的。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧