C # жобасына статикалық пішін қосылды?

Мен терезе пішін элементін қосқаннан кейін, бағдарламаға арналған пайдаланушы хабарламасын жасағым келеді. 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
қосылды

Егер нысан сілтемесіз оған кіру үшін статикалық Form1 жасау керек болса, Program.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();

Басқа ағындардан кіруге шақыруды ұмытпаңыз.

1
қосылды