2010-12-03 55 views
9

我有在WinForm 按鈕文本長度的按鈕可能的各種操作過程中非常..一個按鈕顯示工具提示時,文本太長

我不想改變按鈕的大小(所以我已經設置「Autosize」屬性爲false)

如何在鼠標懸停時顯示工具提示(完整按鈕文本),只要按鈕文本正在切割?

請注意,我不想總是提示.....我想它,只有當按鈕上的文字是越來越切

回答

13

希望這個代碼將有助於您

if (button1.Text.Length > Your button text length to be checked) 
{ 
    System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip(); 
    ToolTip1.SetToolTip(this.button1, this.button1.Text); 
} 

您必須在按鈕寫那些代碼MouseHover事件

+0

這個偉大的工程的MeasureString方法,有一兩件事我注意到的是,如果該按鈕啓用它不會顯示。發現了這一點,因爲我想說出爲什麼一個按鈕被禁用的原因。 – DanO 2014-01-24 19:31:42

1

我認爲你必須手動檢查文本的長度上按鈕,按鈕

的大小

,如果大於你必須添加按鈕運行時的提示財產

不要忘記從工具箱拖動

感謝

在你的項目中添加工具提示控制
1

替代方法:使用按鈕AutoElipsis屬性爲True。

1

我不認爲到目前爲止的答案是非常正確的 - 呈現的字符串的長度(並且這也是您在考慮按鈕尺寸時需要的)的長度可能會因字體和字符而異使用。使用比例字體諸如Microsoft Sans Serif將返回不同的尺寸用於容納相同數量的字符的字符串時,這些字符不同,例如:

「IIIIIIIIII」不是一樣寬

「wwwwwwwwww」。

你應該使用`Graphics類

Graphics grfx = Graphics.FromImage(new Bitmap(1, 1)); 

// Set a proportional font 
button1.Font = new Font("Microsoft Sans Serif", 8.25f, FontStyle.Regular); 
SizeF bounds = grfx.MeasureString(
    button1.Text, 
    button1.Font, 
    new PointF(0, 0), 
    new StringFormat(StringFormatFlags.MeasureTrailingSpaces)); 
MessageBox.Show("Text dimensions: " + bounds.Width + "x" + bounds.Height); 

// Set a non-proportional font 
button1.Font = new Font("Courier New", 8.25f, FontStyle.Regular); 
bounds = grfx.MeasureString(
    button1.Text, 
    button1.Font, 
    new PointF(0, 0), 
    new StringFormat(StringFormatFlags.MeasureTrailingSpaces)); 
MessageBox.Show("Text dimensions: " + bounds.Width + "x" + bounds.Height); 
相關問題