C#WinForm:从列表框中显示的列表中编辑对象

时间:2015-04-06 16:47:03

标签: c# winforms listbox

我的ListBox包含Object的一部分(Title和Name,对象包含4个字符串)。 我希望能够在突出显示ListBox中的项目时通过“编辑”按钮以第二种形式编辑对象。

此listBox由表单2上的数据源填充,编辑表单将为表单3.

这是我的“编辑”按钮的代码:

    private void edit_Click(object sender, EventArgs e)
    {
        object item = listBox1.SelectedItem;
        Form3 MyForm = new Form3();
        MyForm.Owner = this;
        MyForm.Show();
    }

如何填充form3中的字段并进行编辑? :)

1 个答案:

答案 0 :(得分:0)

您将项目(在适当的强制转换后)传递给Form3构造函数,或者在Form3上使用自定义公共属性来设置检索的项目

对于这些示例,我将假设存储在列表框中的每个项目都是名为MyClass的类的实例(使用正确的类名更改它)

将项目传递给Form3构造函数

private void edit_Click(object sender, EventArgs e)
{
    MyClass item = listBox1.SelectedItem as MyClass;
    if(item != null)
    {
         Form3 MyForm = new Form3(item);
         MyForm.Owner = this;
         MyForm.Show();
    }
}

并在Form3构造函数内部

public class Form3 : Form
{
     MyClass currentItemToEdit = null;
     public Form3(MyClass itemToEdit)
     {
         InitializeComponent();
         currentItemToEdit = itemToEdit;
         txtBoxTitle.Text = currentItemToEdit.Title;
         ......
     }
}

使用自定义属性

在Form3中定义公共属性

public class Form3 : Form
{
     public MyClass ItemToEdit {get; set;}
     public Form3()
     {
         InitializeComponent();
     }
     protected void Form_Load(object sender, EventArgs e)
     {
         if(this.ItemToEdit != null)
         {
             txtBoxTitle.Text = ItemToEdit.Title;
              ......
         }
     }
}

在你写的第一个表格中

private void edit_Click(object sender, EventArgs e)
{
    MyClass item = listBox1.SelectedItem as MyClass;
    if(item != null)
    {
         Form3 MyForm = new Form3();
         MyForm.Owner = this;
         MyForm.ItemToEdit = item;
         MyForm.Show();
    }
}