从 Windows Form1 访问 printQueue 类
Posted
技术标签:
【中文标题】从 Windows Form1 访问 printQueue 类【英文标题】:Accessing printQueue class from Windows Form1 【发布时间】:2019-07-20 01:43:21 【问题描述】:我有一个对象数组将是 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);
【问题讨论】:
【参考方案1】:您可以将您的 Form1
作为构造函数传递给您的 class
(因为我没有看到名称,所以我们将其称为 ClassA
),这样您就有了一个具有以下签名的构造函数:
public Form1 Form1 get;set;
public ClassA(Form1 form1)
Form1 = form1;
然后,当从Form1
初始化你的ClassA
实例时,你会这样称呼它:
ClassA classA = new ClassA(this); //Where this is the current instance of Form1
这将允许您从您的类中访问Form1
实例的元素。
但是,这与您真正想要的编写方式似乎有些颠倒。我建议将ClassA
的printPQ
重构为ExportPQ
并返回List<string>
。然后在调用该方法的Form1
逻辑中,遍历从ClassA.ExportPQ
返回的内容并填写ListBox
。这使您的ClassA
更加有用,因为您现在有一种方法可以在大量 UI 控件中返回此信息,而不仅仅是 Form1
上的特定 ListBox
。
【讨论】:
那行得通,我可以在 Form1 中访问 ClassA,但我想以相反的方式访问 ClassA 中的 Form1 所有写在“但是”之前的内容都可以让您访问ClassA
中的Form1
。您目前如何从 Form1
实例化 ClassA
并调用 printPQ()
?以上是关于从 Windows Form1 访问 printQueue 类的主要内容,如果未能解决你的问题,请参考以下文章