从C#中另一种表单类的方法访问表单元素

时间:2015-02-19 17:17:51

标签: c# forms listview

我在我的C#项目中使用ListView项目,我想向它添加一些数据。我在表单的类中创建了一个方法,但由于某种原因,我无法从该方法访问ListView。我只能从那种形式的某些事件中访问它(即点击按钮)。这是我创建的功能

 public static void addToList(string complexity, string processors, string selectedProc)
    {
        string[] row = { DateTime.Now.ToString("HH:mm:ss:ff"), complexity, processors, selectedProc };
        var listViewItem = new ListViewItem(row);
        //tasksList.Items.Add(listViewItem);
    }

注释行是返回错误的行。此方法位于public partial class Form1 : Form

完整的Form1类代码

    public partial class Form1 : Form
{
    processors system1;
    public Form1()
    {
        InitializeComponent();
    }

    private void startButton_Click(object sender, EventArgs e)
    {
        system1 = new processors(proc1Speed.Text, proc2Speed.Text, proc3Speed.Text, proc4Speed.Text, proc5Speed.Text, possibility.Text);

    }

    private void millisecond_Tick(object sender, EventArgs e)
    {
        system1.addTask();
    }

    public static void addToList(string complexity, string processors, string selectedProc)
    {
        string[] row = { DateTime.Now.ToString("HH:mm:ss:ff"), complexity, processors, selectedProc };
        var listViewItem = new ListViewItem(row);
        //tasksList.Items.Add(listViewItem);
    }


}

2 个答案:

答案 0 :(得分:0)

只需从方法中删除static关键字即可。你为什么一开始就把它放在那里? 静态方法无法访问静态方法所属类创建的对象的实例变量。

答案 1 :(得分:0)

所以我找到了出路。正如您所看到的,我的代码中有millisecond_Tick方法。它从另一个类system1.addTask();调用方法,这是我想要将数据添加到ListView的类。所以我使用system1.addTask(this);将我的申请表传递给该方法。所以该方法看起来像public void addTask(Form1 form)。在方法体中,我可以使用form.elementname访问所有表单元素。谢谢大家参与!