【问题标题】:(c# + windows forms) Adding items to listBox in different class(c# + windows forms) 将项目添加到不同类的listBox
【发布时间】:2012-11-18 11:19:01
【问题描述】:

我有两个类(表单),当我单击“接受”按钮时,我希望将来自 class2 的项目添加到 class1 中的 listBox

我尝试了以下代码,但列表框没有任何变化:

private void button1_Click(object sender, EventArgs e)
{
    CarRental i = new CarRental();
    string id = idRental.Text.ToString();

    i.listBox1.Items.Add(id);
    i.listBox1.Update();
    this.Close();
}

我在哪里犯错了?

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    Form2 上声明RentalId 属性。在CarRental 表单(您的第一个表单)处执行以下操作:

    using(Form2 form2 = new Form2())
    {
        if (fomr2.ShowDialog() != DialogResult.OK)
            return;
    
        listBox.Items.Add(form2.RentalId);
    }
    

    以这种方式实现Fomr2.RentalId 属性:

    public string RentalId
    {
       get { return idRental.Text; } // you don't need ToString() call
    }
    

    然后选择“接受”按钮并将其DialogResult 属性设置为OK。因此,单击该按钮将关闭您的对话框并返回DialogResult.OK

    【讨论】:

    • 我在 form1 中的哪个位置使用{...}?
    • @cvenko this using 显示Form2,所以放在需要显示Form2的地方
    【解决方案2】:

    您创建了一个 CarRental 类型的新实体。您应该做的是将第一个表单发送到第二个表单,并通过该实例进行修改。

    【讨论】:

      【解决方案3】:

      您需要访问打开的表单,而不是创建 CarRental 表单的新实例

      private void button1_Click(object sender, EventArgs e)
      {
          CarRental i = (CarRental)Application.OpenForms["CarRentalFormObjectName"];
          string id = idRental.Text.ToString();
      
          i.listBox1.Items.Add(id);
          i.listBox1.Update();
          this.Close();
      }
      

      【讨论】:

      • 你不应该只选择第一个吗?或者至少一个?
      • 我需要在 ["CarRentalFormObjectName"] 中添加什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多