如何创建完整访问权限:表单2到表单1
所以我可以在我的第二个Form2中使用所有Textbox,Datagridviews和来自From1的给定信息
我的计划:用户在我的DataGridView中选择一个项目然后自动打开我的第二个表单,其中所有信息都在文本框中给出等等......用户可以修改它们并将它们保存到我的SQL数据库中,Form2关闭并且Form1再次打开
我看看Stackoverflow和谷歌,但我没有找到一个解决方案,为我工作......
答案 0 :(得分:3)
假设你有人类:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
与网格绑定的人员列表
List<Person> people = GetPeople();
peopleGridView.DataSource = people;
当您双击某一行时,获取数据绑定人并将其传递给第二种形式:
private void peopleGridView_DoubleClick(object sender, EventArgs e)
{
if (peopleGridView.CurrentRow == null)
return;
Person person = (Person)peopleGridView.CurrentRow.DataBoundItem;
using (var editForm = new PersonDetailsForm(person))
{
if (editForm.ShowDialog() != DialogResult.OK)
return;
// get updated person data and save them to database
UpdatePerson(editForm.Person);
}
}
在编辑表单中显示控件中的人物数据(也可以使用数据绑定):
public partial class PersonDetailsForm : Form
{
public PersonEditForm(Person person)
{
InitializeComponent();
idLabel.Text = person.Id.ToString();
nameTextBox.Text = person.Name;
// etc
}
public Person Person
{
return new Person {
Id = Int32.Parse(idLabel.Text),
Name = nameTextBox.Text
};
}
}
好处 - 您可以单独更改PersonEditForm
- 添加/删除控件,更改其类型,添加数据绑定等,而无需更改主表单。
答案 1 :(得分:1)
您可以在Form2中创建一个构造函数,该构造函数接受将填充控件的参数,例如:
public Form2(string property1, List<object1> objects)
{
textbox1.text = property1;
gridview1.DataSource = objects;
//and so on
}
然后从form1
调用它们Form2 form = new Form2(string1,list1);
form.Open();
或者您可以将单个对象传递给构造函数并在Form2中扩展其属性
答案 2 :(得分:-2)
将所有必要的数据传输到第三个类,并将实例作为参数传递给form2。