این سوال احمقانه نیست که هیچی، خیلی هم عاقلانه است :-)
مشکل اینجاست که اگر کلاستون (مثلا Form1) رو استاتیک تعریف کنید، دیگه نمیتونید از ارث بری استفاده کرده و در واقع کلاستون دیگه فرزند Form به حساب نمیاد. پس اگر بخواید بصورت استاتیک اون رو تعریف کنید، دیگه یک فرم بحساب نمیاد.
این سه راه حل رو در نظر داشته باشید:
1.
public static class MyNewForm1
{
private static readonly Form1 _coreForm = new Form1();
private class Form1 : Form
{
}
public static void Show()
{
_coreForm.Show();
}
}
2.
public class MyNewForm2 : Form
{
private readonly static MyNewForm2 _coreForm = new MyNewForm2();
private MyNewForm2()
{
}
public static void ShowMessage()
{
_coreForm.Show();
}
}
در این حالت مجبوریم بجای متد Show از نام ShowMessage استفاده کنم، چون متد Show از کلاس Form مخفی میشد و دیگه نمیشد بهش دسترسی پیدا کرد.
3. حالت سوم اینه که یک فیلد از نوع Form تعریف کنید و روی اون فیلد تغییرات رو اعمال کنید،
که این حالت روش سخت تری به نسبت حالت 1 و 2 است و البته حالت زیاد مناسبی هم نیست :-)