C#如何从新表单编辑listview项目?

时间:2012-05-29 02:36:39

标签: c# listview

所以我有一个ListView,其中填充了form1中的信息和编辑按钮。 现在,当我在ListView中选择项目并点击修改时,我希望它将我带到form2并显示所选项目数据。

例如,我从ListView点击修改中选择名称,它将我带到form2 TextBox,让我说textbox1 = Name和{ {1}}在我的textbox2 = Age中有2个项目名称和年龄。

我现在需要的是,当我选择其中一个List<data>项目并进行预编辑时,会打开ListView并在form2中加载名称并在textbox1中加载年龄,怎么能我这样做?

我正在尝试这样的textbox2事件:

listview_SelectedIndexChanged

有没有办法将此引用到按钮点击编辑?还是有另一种方式?

以后如何保存更改?

3 个答案:

答案 0 :(得分:0)

以构造函数的形式传递值。 在您的主窗体中,您的列表框存储了变量中列表框选定值的值,然后在按钮编辑事件中调用第二个窗体的构造函数

Form2 child= new Form2(Name,Age);
Form2.show()

在第二种形式中,为名称和年龄创建全局变量

 private string _name = String.Empty;
 private int _age; 

然后为第二个表单创建一个构造函数

 public void Form2(string name, int age)
 {

  InitializeComponent();
  this._name = name;
  this._age = age;

  }

答案 1 :(得分:0)

使用“属性”将数据传递到Form2和事件以返回已保存的数据:

<强> Form1中

private void button1_Click(object sender, EventArgs e)
{
    Form2 edit = new Form2();
    edit.SaveEvent += new Form2.SaveEventHandler(edit_SaveEvent);  //Add event handler
    edit.name = People[this.listView1.SelectedItems[0].Index].Name;
    edit.age = People[this.listView1.SelectedItems[0].Index].Age;
    edit.ShowDialog(this);
}

void edit_SaveEvent(object sender, SaveEventArgs e)
{
    //Do Your work here with e.newAge and e.newName
    ((Form2)sender).Close(); //Close Form2
}

<强>窗体2

public partial class Form2 : Form
{
    public delegate void SaveEventHandler(object sender, SaveEventArgs e);
    public event SaveEventHandler SaveEvent;
    public string name { get; set; }
    public string age { get; set; }

    public Form2()
    {
        InitializeComponent();
    }


    private void Form2_Load(object sender, EventArgs e)
    {
        textBox1.Text = name;
        textBox2.Text = age;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        SaveEvent(this, new SaveEventArgs(textBox1.Text, textBox2.Text));
    }

}

public class SaveEventArgs
{
    public SaveEventArgs(string name, string age) {newName = name; newAge = age; }
    public String newName {get; private set;} // readonly
    public String newAge {get; private set;}
}

答案 2 :(得分:0)

为此

使用自定义构造函数

表格1

private void button1_Click(object sender, EventArgs e)
{
   string name = People[this.listView1.SelectedItems[0].Index].Name;
    int age = People[this.listView1.SelectedItems[0].Index].Age;
     Form2 edit = new Form2(name,age);

    edit.ShowDialog(this);
}

表格2

public form2(string name,int age)
{

        textBox1.Text = name;
        textBox2.Text = age.ToString();
}

使用oop概念..很不错。