繁体   English   中英

一个连接 Program.cs 和 Form.cs

[英]A Connecting Program.cs And Form.cs

我的 Form.cs 中有一个 function 我想在我的 program.cs 中召唤

但是如果function不是static,program.cs就不能用了。 如果是 static,Form.cs 不能使用它,因为它涉及不是 static 的控件。

我可以删除我的 program.cs 代码并在我的 form.cs 中找到一种方法来做同样的事情,但我想知道是否有更简单的方法。

这通常是 form.cs 中的 function 所做的

public void Toggle()
    {
        MyDomainUpDown.SelectedIndex = 3;
    }

程序.cs:

MainForm.Toggle();

为什么你不能从你的 program.cs 访问它?

您可以轻松地定义一个变量来保存表单,然后引用它:

static class Program
{
    // Any method can now access the form
    static Form1 MyForm;

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MyForm = new Form1();
        Application.Run(MyForm);
    }

}

Form 实例应该是在 program.cs 中创建的,因此您可以从那里访问公共/内部实例方法。

Program.cs 的默认实现或多或少是这样的:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }
}

new MainForm()创建表单的实例。 只需将其分配给局部变量即可调用其方法:

        var mainForm = new MainForm();
        mainForm.MethodToCall();
        Application.Run(mainForm);

我不确定您的情况是什么,但是如果您没有参考 myForm 为什么或何时要调用 MyForm 中定义的任何非 static 方法?

另一方面,如果您有对它的引用,那么只需将MyFunction公开并正常调用它:

 class Program
 {
     MyForm myForm = new MyForm();
     ....
     myForm.MyFunction(); //call here
 }

 public partial class MyForm: Form
 {
     ....
     public int MyFunction() {...}
 }

如果有实际原因,您也可以将其设为 static 并在 function 的 arguments 中添加对 MyForm 实例的引用。

 public partial class MyForm: Form
 {
     ....
     public static int MyFunction(MyForm myForm) {...}
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM