2011-03-24 25 views
8

Quiero mostrar un MessageBox alertando al usuario que el proceso está completo, y dando un desglose de cuánto tiempo tomó cada etapa del proceso. Tengo el texto que quiero mostrar con el formato adecuado, pero la fuente predeterminada de la clase MessageBox no es de ancho único. Hasta donde puedo decir, no hay forma de especificar la fuente con la que se muestra el texto.C# formatear un MessageBox

¿Existe alguna biblioteca lista para usar que pueda usar para esto, o voy a tener que escribir una?

+0

Estoy seguro de que hay bibliotecas ya escritos, pero no es tomar mucho para escribir uno mismo. –

+0

Tuve el mismo problema en uno de mis proyectos, en el que tuve que mostrar un tamaño de letra más grande. Para eso creé mi propio cuadro de mensaje personalizado. Verifique este enlace para referencia. http://www.codeproject.com/KB/cs/A_Custom_Message_Box.aspx – reggie

Respuesta

12

¿Alguna razón para no crear un Form con un cuadro de texto/etiqueta utilizando una fuente monoespaciada, y luego llamar al Form.ShowDialog? Suena como una biblioteca separada con eso sería excesivo para mí.

+0

Sí, esa es la solución que tenía en mente. Pensé que sería una situación común y me sorprendí al descubrir que no había forma de hacerlo con 'MessageBox', así que esperaba que me faltara algo. Gracias. –

+1

@ T.K .: Podría estar equivocado, pero creo que 'MessageBox.Show' solo está invocando el cuadro de mensaje de Win32, y sospecho que no tiene este tipo de funcionalidad. –

+0

Una gran ventaja de usar un formulario es que puedes hacer que el texto se pueda copiar al portapapeles. P.ej. use un cuadro de texto de solo lectura para presentar un mensaje de error al usuario; parece una etiqueta, pero se puede copiar. –

2

Suena como puede que sólo quieren dejar caer una nueva forma de allí y utilizar algunas etiquetas ..

+0

Me gustó un poco más el comentario de Jon Skeets, ya que mencionó específicamente el uso de ShowDialog() para mostrar el formulario. De esta forma, puede establecer una propiedad de formulario DialogResult, y la llamada ShowDialog() bloqueará la ejecución hasta que se cierre el cuadro de diálogo y se devuelva DialogResult. –

9

Para el registro, esto es de hecho posible, de mensaje() se expande pestañas. Por ejemplo:

private void button1_Click(object sender, EventArgs e) { 
     MessageBox.Show(
      "hello\tworld\r\n" + 
      "second\tline"); 
    } 

No es muy confiable si el ancho de la palabra comienza a acercarse al ancho de la pestaña. Aún deberías preferir un pequeño formulario de ayuda con un ListView.

+0

Esta fue una respuesta útil. Quería usar pestañas en un MessageBox. Gracias. – MikeMalter