C# 如何从新窗体编辑列表视图项



所以我有一个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;

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

之后如何保存更改?

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

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;
  }

使用属性将数据传递给 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;}
}
为此

使用自定义构造函数

在表格 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();
}

使用哎呀概念..很好。

最新更新