【问题标题】:Accessing printQueue class from Windows Form1从 Windows Form1 访问 printQueue 类
【发布时间】: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);
        }
    }

【问题讨论】:

    标签: c# arrays class


    【解决方案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 实例的元素。

    但是,这与您真正想要的编写方式似乎有些颠倒。我建议将ClassAprintPQ 重构为ExportPQ 并返回List&lt;string&gt;。然后在调用该方法的Form1 逻辑中,遍历从ClassA.ExportPQ 返回的内容并填写ListBox。这使您的ClassA 更加有用,因为您现在有一种方法可以在大量 UI 控件中返回此信息,而不仅仅是 Form1 上的特定 ListBox

    【讨论】:

    • 那行得通,我可以在 Form1 中访问 ClassA,但我想以相反的方式访问 ClassA 中的 Form1
    • 所有写在“但是”之前的内容都可以让您访问ClassA 中的Form1。您目前如何从 Form1 实例化 ClassA 并调用 printPQ()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多