【发布时间】:2011-12-15 04:52:43
【问题描述】:
我有一个包含如下文本的标签:
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 窗体。
【问题讨论】:
-
如果您为每个十六进制对创建单独的标签,这将容易得多。如果您使用一个标签,则一种选择是处理 MouseDown 事件(单击不会为您提供任何位置信息)以确定用户单击的位置,然后通过测量与该坐标对应的字符数来确定该坐标代表的对。
-
"然后通过测量对应于该坐标的字符数来确定该坐标代表的对。" 你能给我一个线索吗?分开的标签,IDE 变得非常滞后。
-
那是非常糟糕的建议。您需要使用固定间距字体,例如 Consolas 或 Courier,以便数字处于可预测的位置。然后,您只需要知道将鼠标位置映射到字符串索引的字母大小即可。 TextRenderer.MeasureText() 在 Winforms 中查找。
-
我不想使用 TextBox 为什么? 使用
read-only并且使用GetCharIndexFromPosition方法非常简单.不要对着系统工作!
标签: c# text cursor position label