簡體   English   中英

是否可以獲取在C#表單上單擊的文本的哪個字符?

[英]Is it possible to get which character of text is clicked on C# form?

我正在嘗試獲取標簽文本中的*號,如圖所示。 PIC

注意:*的編號最初未知,用戶輸入它,因此鼠標單擊的位置沒有用。

答案是:

第一個*位置的X已知,等於=10。星號等距分布,兩個*之間的距離約為〜15像素。

當用戶單擊星號之一時,可以按以下代碼計算星號索引

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

這取決於。 如果您願意在TextBox中顯示文本而不是Label(現在使用的樣子 ),則可以使用GetCharIndexFromPosition方法。 只需確保在客戶端坐標中指定Point(如果在Label控件本身中處理鼠標單擊,則免費提供)。

請注意,假設您不希望用戶實際修改文本,則可以將TextBox設置為ReadOnly。 他們仍然可以選擇文本。

如果您需要一個實際的Label控件(例如,您甚至不希望選擇文本,並且禁用的TextBox呈灰色外觀也不適合),那么您就必須編寫自己的(或在網上找到其他人已經寫過),因為內置的功能不具備該功能。 不會太困難。 您可以使用TextRenderer方法來確定每個字符在繪制時的位置,然后使用該信息將字符位置與鼠標單擊相關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM