2014-10-18 43 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方法確定每個字符在繪製時的佈局位置,然後使用該信息將字符位置與鼠標單擊相關聯。

相關問題