0

所以我有一个ListView填充了信息和编辑按钮的form1. 现在,当我选择项目ListView并单击编辑时,我希望它带我进入form2并显示所选项目数据。

例如,我从命中编辑中选择名称,ListView它将我带到form2哪里TextBox,可以说textbox1 = Nametextbox2 = Age并且在我List<data>的名称和年龄中有 2 个项目。

我现在需要的是,当我选择其中一项ListView并进行预编辑时,它会打开form2并加载姓名textbox1和年龄,textbox2我该怎么做?

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

Form2 edit = new Form2();
edit.textBox1.Text = People[this.listView1.SelectedItems[0].Index].Name;
edit.textBox2.Text = People[this.listView1.SelectedItems[0].Index].Age;

有没有办法将此引用到按钮单击编辑?还是有其他方法?

之后如何保存更改?

4

3 回答 3

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;

  }
于 2012-05-29T02:48:16.897 回答
0

使用属性将数据传递给 Form2,使用事件返回保存的数据:

表格1

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;}
}
于 2012-05-29T02:58:26.093 回答
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 概念..很好。

于 2012-05-29T03:33:32.020 回答