当我尝试调用form1
from上的方法时form2
,根据以下代码,没有任何反应:
表格2:
Form1 form1 = new Form1();
form1.AddToListView();
表格1:
public void AddToListView()
{
AddList();
listView1.Items.Add("Test", "Test", 0);
label1.Text = "Test";
}
我究竟做错了什么?
随着Form1 form1 = new Form1();
您正在创建表单的新实例,而不是引用您的 mainform1
我假设是您的问题。
您要么需要传递form1
toform2
的构造函数的引用,要么丢弃当前form1
并更改form2
为:
Form1 form1 = new Form1();
form1.Show();
form1.AddToListView();
正如 Alfie 所说,当您创建 Form1 的新实例时,它与当前正在运行的实例无关,您可能会在解决方案的文件中找到创建和运行的Main
方法:Program.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); // THIS INSTANCE
}
如果您难以理解这一点,那么您最好更加熟悉面向对象编程 (OOP)。在过去的编程语言(如 VB6)中,我们只有一个 Form1。但是在像 C# 这样的 OOP 中,您可能有数千个 Form1 实例,更通俗地说,有数千个 Form1。
但是,您想要做的最好的解决方案可能是更改运行 Form1 的默认方式:
static class Program
{
public static Form1 myForm1;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
myForm1= new Form1 ();
Application.Run(myForm1);
}
}
并使用它来操作实例:
Program.myForm1.AddToListView();
顺便说一句,就 OOP 而言,这样做对我来说似乎很不自然。请添加有关您对此可能有的任何想法的评论?