2010-12-03 7 views
9

tengo un botón en el botón WinForm longitud del texto podría muy durante varias operaciones ..Mostrar información sobre herramientas para un botón cuando el texto es demasiado largo

no quiero para variar el tamaño del botón (Así que he puesto "Tamaño automático" propiedad en false)

¿Cómo demuestro información sobre herramientas (de texto completo botón) el cursor del mouse cuando se está cortado botón de texto?

Tenga en cuenta que no quiero información sobre herramientas siempre ..... lo quiero sólo cuando el texto del botón se está cortado

Respuesta

13

Esperanza Este código le ayuda a

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); 
} 

Debe escribir código en los botones MouseHover caso

+0

Esto funciona muy bien, una cosa que noté fue si el botón está activado, no se mostrará. Encontrado esto como yo quería poner una razón para que un botón se ha desactivado. – DanO

1

yo creo que hay que comprobar manualmente la longitud del texto en el botón con el tamaño del botón

y si más grande que hay que añadir la propiedad sobre herramientas de tiempo de ejecución botón

no se olvide de añadir control de información sobre herramientas en su proyecto arrastrando desde la caja de herramientas

Gracias

1

alternativa: utilizar AutoElipsis propiedad del botón en True.

1

No creo que las respuestas hasta ahora sean del todo correctas: la longitud de la cadena representada (y esto es lo que necesita cuando toma en cuenta las dimensiones de su botón) puede variar según la fuente y los caracteres que utilizar. El uso de una fuente proporcional como Microsoft Sans Serif devolverá diferentes dimensiones para cadenas que contienen el mismo número de caracteres cuando estos caracteres difieren, por ejemplo .:

"iiiiiiiiii" no es tan amplia como

"wwwwwwwwww".

se debe utilizar el método de MeasureString de la clase `Gráficos

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); 
Cuestiones relacionadas