c#winforms - 对子窗体的无法访问控制

Bon*_*aca 1 c# winforms

关于两种形式的永恒问题:

frm02 frm02 = new frm02();
frm02.Text = "Objects";
ds02 = new DataSet();
ds02.ReadXml(path02);
frm02.dgv02.DataSource = ds02.Tables[0];  //error: dgv02 is inaccessible...
frm02.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Ree*_*sey 5

你需要dgv02 公开.默认情况下,当您通过设计器添加类型时,它们不是公共的.您可以在设计窗口中编辑其属性,并将可访问性级别更改为public.

话虽这么说,一个更好的选择可能是创建一个返回适当控件的公共属性,或者更好的是,允许您设置数据.例如,如果将此方法添加到表单中:

public void SetDatasource(DataSet data)
{
     this.dgv02.DataSource = data;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以将其称为:

frm02.SetDatasource(ds02);
Run Code Online (Sandbox Code Playgroud)