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.