2014-10-18 45 views
0

我想要在图片中获取标签文本中点击哪个*。 Pic是否有可能获取C#表单上哪些文本字符被点击?

注意:最初不知道*的数量。用户输入它。所以鼠标点击的位置是没有用的。

+2

的代码来计算使它们分开,把每个数字成不同的标签和相同的事件处理程序附加到所有标签。然后使用发件人获取点击标签。 – 2014-10-18 19:31:24

回答

3

回答是:

第一*的位置的X是已知的,等于= 10个.The星号相等地间隔,距离的两个之间*是〜15像素。

当用户点击星号中的一个,星号的指数可以如下

private void label4_MouseDoubleClick(object sender, MouseEventArgs e) 
     { 
      double t = (e.X - 10)/15.0; 
      int indexOfClickedAsterisk=(int)Math.Round(t) + 1; 
     } 
2

这取决于。如果您愿意在文本框中显示文本而不是标签(这就是您现在使用的模式),那么您可以使用GetCharIndexFromPosition方法。只要确保在客户端坐标中指定Point(如果您在Label控件本身中处理鼠标单击,则免费)。

请注意,您可以将TextBox设置为ReadOnly,假设您不希望用户实际修改文本。他们仍然可以选择文字。

如果您需要实际的Label控件(例如,您甚至不想要可选文本,并且禁用的TextBox的灰显外观不合适),那么您必须编写自己的(或找到一个在线,其他人已经写了),因为内置的没有这个功能。这不会太困难。您可以使用TextRenderer方法确定每个字符在绘制时的布局位置,然后使用该信息将字符位置与鼠标单击相关联。

相关问题