簡體   English   中英

從Form2到Form1的完全訪問權限

[英]Full access from Form2 to Form1

如何創建從Form 2到Form1的完全訪問權限
所以我可以在第二個Form2中使用From1中的所有Textboxes,Datagridviews和給定信息

我的計划:用戶在我的DataGridView中選擇一個項目,然后自動打開我的第二個表單,所有信息都在文本框中給出,依此類推...用戶可以對其進行修改並將其保存到我的SQL數據庫中,關閉Form2並再次打開Form1

我看着Stackoverflow和Google,但找不到解決方案,為我工作...

假設您有個人班級:

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添加/刪除控件,更改控件類型,添加數據綁定等,而無需更改您的主窗體。

您可以在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中擴展其屬性

將所有必要的數據傳輸到第三類,並將實例作為參數傳遞給form2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM