Статична форма C # додана до проекту?

Я хочу створити спеціальне вікно повідомлення для програми, тому я додав елемент форми Windows. Я хотів би, щоб він поводився як MessageBox в тому, що він статичний, і я просто викликаю MessageBox.Show (a, b, c, ...) . В дизайнерських формах, однак, я не бачу, як я можу зробити це статичним. Чи можу я просто додати код static ? Чи є параметр властивості, який мені не вистачає в режимі дизайнера?

Дякую!

4

4 Відповіді

MessageBox is not a static class, the Show method however is. Make Show static, in code. E.g.

public class MyMessageBox : Form
{
    public static int MyShow()
    {
       //create instance of your custom message box form
       //show it
       //return result 
    }
}
6
додано
Це також можна побачити з MSDN. msdn.microsoft.com/en-us/library/ & hellip;
додано Автор Austin Salonen, джерело

Це звичайний клас із одним методом як статичний, який створює новий екземпляр і діє.

public class MyMessageBox
{
   public static MyResult Show(params)
   {
       var myMessageBox = new MyMessageBox();
       myMessageBox.Message = params ...
       return  myMessageBox.ShowDialog();
   }
}
4
додано

Додайте статичний метод у форму, яка відображається сама та повертає DialogResult:

public partial class MyMessageBoxForm : Form {

  public static DialogResult Show(string message) {
    using (MyMessageBoxForm form = new MyMessageBoxForm(message)) {
      return form.ShowDialog();
    }

  private MyMessageBoxForm(string message) {
   //do something with message
  }

}
2
додано

Якщо ви хочете створити статичну форму1 для доступу до неї без посилання на об'єкт, ви можете змінити програму .cs:

public class Program
{
    public static Form1 YourForm; 

    [STAThread]
    static void Main(string[] args)
    {
        using (Form1 mainForm = new Form1())
        {
            YourForm = mainForm;
            Application.Run(mainForm);
        }
        YourForm = null;
    }
}

і викликати методи класу Form1 з будь-якого місця вашої програми:

Program.YouForm.DoAnything();

Не забудьте викликати Invoke для доступу з інших потоків.

1
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug