I’m trying to make a custom message box with my controls.
public static partial class Msg : Form
{
public static void show(string content, string description)
{
}
}
Actually I need to place some controls (a gridview) in this form and I have to apply my own theme for this window, so I don’t want to use MessageBox. I want to call this from my other forms like
Msg.show(parameters);
I don’t wish to create an object for this form.
I know I can’t inherit from Form class because it isn’t static. But I wonder how MessageBox is implemented, because it is static. It is being called like MessageBox.show("Some message!");
Now I’m getting an error because inheritance is not allowed:
Static class ‘MyFormName’ cannot derive from type ‘System.Windows.Forms.Form’. Static classes must derive from object

How MessageBox is implemented then?
Your form class needs not to be
static. In fact, a static class cannot inherit at all.Instead, create an
internalform class that derives fromFormand provide apublic statichelper 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.
Side note: as Jalal points out, you don’t have to make a class
staticin order to havestaticmethods 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).