我在从另一个类访问和修改列表框控件时遇到了一些问题。
这是MainForm,它包含列表框:
public partial class MainForm : Form
{
private static MainForm mainForm = new MainForm();
internal static MainForm init()
{
return MainForm.mainForm;
}
public MainForm()
{
InitializeComponent();
}
}
这是我用来尝试修改列表框的第二个类(这些项是从事件中添加的):
public class Utils
{
void ItemsReceived(object sender, DataReceivedEventArgs<ListboxItems> e)
{
MainForm.init().listBox1.Items.Add("test");
}
}
使用此代码设置,列表框中不会添加任何内容。有任何想法吗?或者甚至是更好的方法来解决这个问题?
答案 0 :(得分:0)
通常,visual studio在Program.cs
文件中生成以下代码:
Application.Run(new MainForm());
如果此行仍然存在,则静态mainForm
变量将保存不同的实例MainForm
,而不是运行应用程序时可见的实例。如果我是对的,请将Program.cs
中的行更改为:
Application.Run(MainForm.init());
在旁注中,在使用单例(反)模式时,请考虑将该方法的名称更改为GetInstance()
,因为init()
似乎可以初始化某些内容。