C# 如何从新窗体编辑列表视图项
本文关键字:编辑 列表 视图 窗体 新窗体 | 更新日期: 2023-09-27 18:35:31
所以我有一个ListView
,里面填充了信息和form1
编辑按钮。现在,当我在ListView
中选择项目并单击编辑时,我希望它能带我form2
并显示所选项目数据。
例如,我从点击编辑中选择名称ListView
它会将我带到form2
TextBox
在哪里,假设textbox1 = Name
和textbox2 = 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();
}
使用哎呀概念..很好。