Your form class needs not to be static
. In fact, a static class cannot inherit at all.
Instead, create an internal
form class that derives from Form
and provide a public static
helper method to show it.
This static method may be defined in a different class if you don’t want the callers to even “know” about the underlying form.
/// <summary>
/// The form internally used by <see cref="CustomMessageBox"/> class.
/// </summary>
internal partial class CustomMessageForm : Form
{
/// <summary>
/// This constructor is required for designer support.
/// </summary>
public CustomMessageForm ()
{
InitializeComponent();
}
public CustomMessageForm (string title, string description)
{
InitializeComponent();
this.titleLabel.Text = title;
this.descriptionLabel.Text = description;
}
}
/// <summary>
/// Your custom message box helper.
/// </summary>
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 ();
}
}
}
Side note: as Jalal points out, you don’t have to make a class static
in order to have static
methods in it. But I would still separate the “helper” class from the actual form so the callers cannot create the form with a constructor (unless they’re in the same assembly of course).