Saltar al contenido

¿Cómo crear un MessageBox personalizado?

No olvides que en las ciencias un error suele tener diversas resoluciones, por lo tanto nosotros te mostramos lo mejor y más eficiente.

Solución:

Su clase de formulario no necesita ser static. En realidad, a static la clase no puede heredar en absoluto.

En cambio, crear un internal clase de formulario que se deriva de Form y proporcionar un public static método auxiliar para mostrarlo.

Este static método puede definirse en una clase diferente si no desea que las personas que llaman ni siquiera “sepan” sobre el formulario subyacente.

/// 
/// The form internally used by  class.
/// 
internal partial class CustomMessageForm : Form

    /// 
    /// This constructor is required for designer support.
    /// 
    public CustomMessageForm ()
    
        InitializeComponent(); 
     

    public CustomMessageForm (string title, string description)
    
        InitializeComponent(); 

        this.titleLabel.Text = title;
        this.descriptionLabel.Text = description;
     


/// 
/// Your custom message box helper.
/// 
public static class CustomMessageBox

    public static void Show (string title, string description)
    
        // using construct ensures the resources are freed when form is closed
        using (var form = new CustomMessageForm (title, description)) 
            form.ShowDialog ();
        
    

Nota al margen: como señala Jalal, no tienes que hacer una clase static para tener static métodos en él. Pero todavía separaría la clase “ayudante” del formulario real para que las personas que llaman no puedan crear el formulario con un constructor (a menos que estén en el mismo ensamblaje, por supuesto).

No necesitas que la clase sea static. Solo haz algo como:

public partial class Msg : Form

    public static void show(string content, string description)
    
         Msg message = new Msg(...);
         message.show();
    

No necesitas hacer la clase. static para llamar a uno de sus métodos estáticamente — es suficiente declarar el método particular como static.

public partial class DetailedMessageBox : Form

    public DetailedMessageBox()
    
        InitializeComponent();
    

    public static void ShowMessage(string content, string description)
    
        DetailedMessageBox messageBox = new DetailedMessageBox();
        messageBox.ShowDialog();
    

Estamos usando messageBox.ShowDialog() para que el formulario se muestre como un modal ventana. Puede mostrar el cuadro de mensaje usando DetailedMessageBox.ShowMessage("Content", "Description");.

Por cierto, deberías repensar tu nombre y apegarte a un patrón de nombres consistente. Msg y show son nombres débiles que no coinciden con las Pautas de nomenclatura. ¡Definitivamente querrás revisarlos!

Ten en cuenta difundir este tutorial si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *