Texto en negrita en MessageBox

¿Cómo puedo mostrar el texto en negrita en el cuadro de diálogo que muestra MessageBox.Show , usando C #?

Es posible, un cuadro de mensaje es una ventana común que se puede confundir como cualquier otra. El código para hacerlo es sin embargo un poco arenoso. Agregue una nueva clase a su proyecto y pegue este código:

 using System; using System.Text; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; class BoldMessageBox : IDisposable { private int mTries = 0; private Form mOwner; private Font mFont; public BoldMessageBox(Form owner) { mOwner = owner; owner.BeginInvoke(new MethodInvoker(findDialog)); } private void findDialog() { // Enumerate windows to find the message box if (mTries < 0) return; EnumThreadWndProc callback = new EnumThreadWndProc(checkWindow); if (EnumThreadWindows(GetCurrentThreadId(), callback, IntPtr.Zero)) { if (++mTries < 10) mOwner.BeginInvoke(new MethodInvoker(findDialog)); } } private bool checkWindow(IntPtr hWnd, IntPtr lp) { // Checks if  is a dialog StringBuilder sb = new StringBuilder(260); GetClassName(hWnd, sb, sb.Capacity); if (sb.ToString() != "#32770") return true; // Got it, get the STATIC control that displays the text IntPtr hText = GetDlgItem(hWnd, 0xffff); if (hText != IntPtr.Zero) { // Get the current font IntPtr hFont = SendMessage(hText, WM_GETFONT, IntPtr.Zero, IntPtr.Zero); Font font = Font.FromHfont(hFont); // And make it bold (note the size change to keep enough space!!) mFont = new Font(font.FontFamily, font.SizeInPoints - 1f, FontStyle.Bold); SendMessage(hText, WM_SETFONT, mFont.ToHfont(), (IntPtr)1); } // Done return false; } public void Dispose() { mTries = -1; mOwner = null; if (mFont != null) mFont.Dispose(); } // P/Invoke declarations private const int WM_SETFONT = 0x30; private const int WM_GETFONT = 0x31; private delegate bool EnumThreadWndProc(IntPtr hWnd, IntPtr lp); [DllImport("user32.dll")] private static extern bool EnumThreadWindows(int tid, EnumThreadWndProc callback, IntPtr lp); [DllImport("kernel32.dll")] private static extern int GetCurrentThreadId(); [DllImport("user32.dll")] private static extern int GetClassName(IntPtr hWnd, StringBuilder buffer, int buflen); [DllImport("user32.dll")] private static extern IntPtr GetDlgItem(IntPtr hWnd, int item); [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); } 

Y úsalo así:

 private void button1_Click(object sender, EventArgs e) { using (new BoldMessageBox(this)) { MessageBox.Show("Nobugz waz here"); } } 

Hay un error en este enfoque. Después de hacer que la fuente sea negrita, el texto aún debe caber en el control estático que el cuadro de mensaje reserva para el texto. Eso requirió que hiciera la fuente más pequeña. Puede que tenga que ajustar este valor.

No puedes. Este es un contenedor para la API MessageBoxEx .

Crea tu propio cuadro de mensaje personalizado para hacerlo.


Puede seguir este tutorial, como un ejemplo de cómo implementar uno.

Los pasos básicos para crear dicha forma:

  1. Crea un nuevo formulario
  2. Agrega una etiqueta y dos botones
  3. Establecer la fuente de la etiqueta en negrita
  4. agregue controlador a ambos botones, cierre el formulario y establezca alguna propiedad para la que se presionó el botón.

No se puede hacer. Tendrás que construir tu propia caja. Asumo que esto es WinForms, si es ASP.NET que no estoy calificado para responder.

Extended MessageBox .NET Assembly Página web de XMSG .NET: más información, descargar

Ajusta sobre la marcha una amplia variedad de ajustes visuales de MessageBox.

Las características ajustables incluyen la fuente y el color del mensaje, los títulos de los botones, las fonts y la información sobre herramientas, el fondo del diálogo, la posición del diálogo, el icono del diálogo, el tiempo de espera y más. Según la fuente de mensaje seleccionada, la ventana de diálogo se redimensiona automáticamente para acomodar el mensaje.

Controles adicionales que se pueden mostrar de forma opcional: checkbox, entrada de texto, enlace web, hasta 3 botones adicionales.

En su código .NET todavía llama a MessageBox.Show. Extended MessageBox no es un diálogo hecho a medida. Esto sigue siendo un MessageBox regular con funciones adicionales añadidas.

Sistema operativo compatible: XP, 2000, 2003, 2008 Vista, Win7 – 32 o 64 bits.

Las descargas incluyen una versión de prueba totalmente funcional y una versión regular con el código fuente completo de C #.