【问题标题】:Access and modify form listbox from another class从另一个类访问和修改表单列表框
【发布时间】:2014-10-11 21:46:30
【问题描述】:

我在访问和修改另一个类的列表框控件时遇到了一些问题。

这是包含列表框的 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");
    }
}

使用此代码设置,不会向列表框添加任何内容。有任何想法吗?或者更好的方法来解决这个问题?

【问题讨论】:

标签: c# listbox


【解决方案1】:

通常,Visual Studio 在Program.cs 文件中生成以下代码:

Application.Run(new MainForm());

如果该行仍然存在,您的静态mainForm 变量将保存MainForm 的一个不同 实例,而不是运行应用程序时可见的实例。如果我是对的,请将Program.cs 中的行更改为:

Application.Run(MainForm.init());

附带说明,在使用单例(反)模式时,请考虑将该方法的名称更改为GetInstance(),因为init() 似乎在初始化某些东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多