从Form2到Form1的完全访问权限

时间:2014-03-07 13:57:19

标签: c# sql winforms forms

如何创建完整访问权限:表单2到表单1
所以我可以在我的第二个Form2中使用所有Textbox,Datagridviews和来自From1的给定信息

我的计划:用户在我的DataGridView中选择一个项目然后自动打开我的第二个表单,其中所有信息都在文本框中给出等等......用户可以修改它们并将它们保存到我的SQL数据库中,Form2关闭并且Form1再次打开

我看看Stackoverflow和谷歌,但我没有找到一个解决方案,为我工作......

3 个答案:

答案 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。