首页 > 解决方案 > 从 Windows Form1 访问 printQueue 类

问题描述

我有一个对象数组将是 int 和 string,我想将它输出到表单中的列表框中。对象数组在另一个类 Item

是否可以像这样让 Form1 在 Class Item 中识别

还是我必须将结果发送回 form1 并将其输入到那里的列表框中?

类项目

 public void printPQ()
    {
        for (int i = 0; i < numItems; i++)
        {
            //contents += (items.elements[i] == null ? null : items.elements[i].name) + "\n"; 
            lblShowPatient.Text = (items.elements[i].priority + items.elements[i].name);
        }
    }

标签: c#arraysclass

解决方案


您可以将您Form1作为构造函数传递给您的class(因为我没有看到名称,我们将调用它ClassA),这样您就具有以下签名的构造函数:

public Form1 Form1 {get;set;}

public ClassA(Form1 form1)
{
    Form1 = form1;
}

然后,当从 初始化您的ClassA实例时Form1,您将这样调用它:

ClassA classA = new ClassA(this); //Where this is the current instance of Form1

这将允许您从类中访问实例的元素Form1

但是,这似乎与您真正想要编写它的方式有些颠倒。我建议重构ClassA'sprintPQ而不是命名ExportPQ并返回 a List<string>。然后在Form1调用该方法的逻辑中,遍历返回的内容ClassA.ExportPQ并填写ListBox. 这让您ClassA变得更加有用,因为您现在有一种方法可以在众多 UI 控件中返回此信息,而不仅仅是ListBoxForm1.


推荐阅读