0

我在 usercontrol schuler 中有方法 listviewupdate() 。用户控件舒勒在 form1 中。然后我有form2。当我单击 form2 中的按钮时,我想调用方法 listviewupdate()。

我尝试在 form1 中创建第二个方法,该方法调用 listviewupdate() 方法,然后在 form 2 中调用第二个方法,但出现错误。有人能帮帮我吗?

4

2 回答 2

0

@Axel Kemper 感谢您的回复。我按照你告诉我的方法做了,Program.MainForm.MyMethod()但没有找到 MyMethod()。然后我进入 form1.Designer ,我看到 usercontrol 设置为 private,我也将它切换为 public,现在它可以与Program.MainForm.schuler1.MyMethod() //schuler1 is the name of my user control.

我只是不明白为什么它不起作用

Form1 form1 = Application.OpenForms[1] as Form1; form1.schuler1.ListviewUpdate(); //schuler1 is the name of my usercontrol

即使用户控件设置为公共,我也会收到错误“System.NullReferenceException”main.schuler1.ListviewUpdate();

于 2019-06-03T19:03:44.417 回答
0

在您的文件Program.cs中,您可以定义一个全局可访问的变量:

static class Program
{
    //  for external access to Form1 methods
    public static Form1 MainForm;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MainForm = new Form1(args);
        Application.Run(MainForm);
    }
}

MainForm然后可以使用静态变量访问任何公共方法到Form1via Program.MainForm.MyMethod()

Form2假设您可以从内部访问对象Form1,则可以使用Form2对象变量从方法中调用Form2方法Form1

请注意,当(在不知不觉中......)使用多个线程时,您可能会遇到问题。阅读有关BeginInvoke的信息。

于 2019-06-03T11:05:32.270 回答