yes visual personalizados modal information formulario error ejemplos botones c# .net messagebox modeless

c# - visual - Crear un buzón de mensajes sin modo



messagebox c# yes no (7)

// no hay commnet

object sync = new object(); ManualResetEvent Wait = new ManualResetEvent(); //you should create a place holder named MessageData for Message Data. List<MessageData> Messages = new List<MessageData>(); internal void ShowMessage(string Test, string Title, ....) { MessageData MSG = new MessageData(Test, Title); Wait.Set(); lock(sync) Messages.Add(MSG); } // another thread should run here. void Private_Show() { while(true) { while(Messsages.Count != 0) { MessageData md; lock(sync) { md = List[0]; List.RemoveAt(0); } MessageBox.Show(md.Text, md.Title, md....); } Wait.WaitOne(); } }

necesita más hilos y más código (no tengo tiempo suficiente para escribir) para los mensajes simultáneos.

¿Cómo se puede hacer para crear un MessageBox Modeless? ¿Tengo que crear mi propia clase de Windows Form y usar eso? Si es así, ¿hay una manera fácil de agregar un ícono de advertencia (en lugar de insertar mi propia imagen de uno) y cambiar el tamaño según el volumen de texto?


Además de escribir el código, puede crear un formulario pequeño que en el constructor haga lo siguiente

  • Toma una cadena de parámetros como el mensaje a mostrar
  • Rellena una etiqueta en el formulario con esta cadena
  • Carga un icono con uno de los siguientes (pase un Enum al constructor)
    • SystemIcons.Application
    • SystemIcons.Asterix
    • SystemIcons.Error
    • SystemIcons.Exclamation
    • SystemIcons.Hand
    • SystemIcons.Information
    • SystemIcons.Question
    • SystemIcons.Shield
    • SystemIcons.Warning
    • SystemIcons.WinLogo
  • Llamadas Mostrar () que hará que sea un diálogo modal

Si realmente quisiera, podría escuchar un evento que se dispara cuando se presiona el botón OK.


Puede usar el ícono de advertencia del sistema estándar usando SystemIcons


Si necesita un cuadro de mensaje que solo se muestra mientras el código continúa ejecutándose en segundo plano (el cuadro sigue siendo modal y evitará que el usuario use otras ventanas hasta que se haga clic en Aceptar), siempre puede iniciar el cuadro de mensaje en su propio hilo. y continúa haciendo lo que hagas en el hilo original:

// Do stuff before. // Start the message box -thread: new Thread(new ThreadStart(delegate { MessageBox.Show ( "Hey user, stuff runs in the background!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning ); })).Start(); // Continue doing stuff while the message box is visible to the user. // The message box thread will end itself when the user clicks OK.


Tienes que usar el formulario y llamar a showDialog ()

Y para uso de iconos.

MessageBoxIcon.Warning


Nota: esto creará un cuadro de diálogo modal, que no es lo que está preguntando la pregunta

aquí hay un código de muestra

if (MessageBox.Show("Description of the message", "Caption text", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) { // Do some stuff if yes pressed } else { // no pressed }


Tendrá que crear un formulario y usar Show() para mostrarlo sin modo. MessageBox.Show(...) comportó como se ve en el ejemplo de ghiboz; La "Descripción del mensaje" se muestra hasta que el usuario presiona un botón.

Con MessageBox.Show(...) obtendrá el resultado tan pronto como se cierre el cuadro de mensaje; con un cuadro de mensaje sin modelo, su código tendrá que tener un mecanismo como un evento para reaccionar cuando el usuario finalmente seleccione algo en su cuadro de mensaje.