从 C# 中表单的 class 的另一种方法获取对表单元素的访问

Get access to form element from another method of form's class in C#

我在我的 C# 项目中使用 ListView 项,我想向其中添加一些数据。我在表单的 class 中创建了一个方法,但由于某种原因我无法从该方法访问 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);
    }

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

完整 Form1 class 代码

    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);
    }


}

只需从方法中删除 static 关键字。你为什么把它放在那里? 静态方法不能访问静态方法所属的 class 创建的对象的实例变量。

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