如何:通过鼠标位置从标签获取文本索引? C#

时间:2011-12-15 04:52:44

标签: c# text cursor position label

我有一个标签,其中包含以下文字:

  <00> 00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3

所以,因为这是一个标签(我不想使用TextBox),我需要知道在光标位置获取标签中文本索引的方法。

让我们说在最后一篇文章中,鼠标被点击在AA的上方。

  

00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3   00 AA FA 08 0F FF 84 7A A7 22 27 94 73 9A 7F D3

然后,我需要得到“AA”的索引,有没有办法做到这一点?,(无论我是否使用Win32 API)

我真的找不到任何东西......

我正在使用Windows窗体。

1 个答案:

答案 0 :(得分:1)

是winforms还是WPF?

您是否尝试过使用onMouseMove事件(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove%28v=vs.71%29.aspx)并获取来自mousemoveeventargs的位置?那应该是一个位置。您可以计算字体大小,如果您可以将位置除以字符数来找出位置,那就可以计算出来。

要做的一件事是,为了确保你使用的字体具有相同宽度的字符,其中很多都没有。

我不推荐我建议使用的方法,因为它非常hacky并且不太可能被其他东西重复使用。还需要一段时间才能摆脱所有错误。

我建议使用WPF,并使用带有模板的listview进入网格。在此处查看此示例:http://www.mindscapehq.com/blog/index.php/2007/12/04/five-steps-to-wpf-data-visualisation/该示例显示了列表框如何更改其外观以将元素放置在x,y坐标中。 listview默认支持检查是否选择了项目。如果你坚持使用winforms,我的原始方法还可以,或者动态生成大量标签更好。