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

时间:2012-06-09 21:21:26

标签: 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();

pleaseHelp!

1 个答案:

答案 0 :(得分:5)

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

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

public void SetDatasource(DataSet data)
{
     this.dgv02.DataSource = data;
}

然后您可以将其称为:

frm02.SetDatasource(ds02);