我不知道怎么说,我有 3 个 datagridview 控件(名为datagridview1
, datagridview2
& datagridview3
)。我的问题是我可以连接这些控件的名称吗?
我的意思是有没有办法可以这样称呼它:datagridview(n) or datagridview + n
我正在使用winforms。
提前致谢!
我不知道怎么说,我有 3 个 datagridview 控件(名为datagridview1
, datagridview2
& datagridview3
)。我的问题是我可以连接这些控件的名称吗?
我的意思是有没有办法可以这样称呼它:datagridview(n) or datagridview + n
我正在使用winforms。
提前致谢!
我认为您想要的是找到具有动态名称的控件?
可能是这样的:
Control match = ParentControl.Controls["datagridview" + n];
因此,例如,如果您的所有数据网格都在一个名为“MyPanel”的面板中,那么您可以这样做:
DataGridView match = MyPanel.Controls["datagridview" + n] as DataGridView;
但是,如果您的数据网格并不都属于同一个父控件,那么您可以使用Controls.Find方法找到它们:
DataGridView match = this.Controls.Find("datagridview" + n, true)[0] as DataGridView;
注意:Controls.Find 方法返回一个数组,因此您需要选择第一个元素(假设您的控件名称是唯一的),在尝试访问第一个元素之前检查数组是否有任何值也是值得的。
如果你想把它包装在一个函数中,你可以这样做:
public DataGridView GetDataGridViewForTabNumber(int n){
Control[] matches = this.Controls.Find("datagridview" + n, true);
if(matches.length == 0)
return null;
return matches[0] as DataGridView;
}
并这样称呼它:
DataGridView dgv = GetDataGridViewForTabNumber(1);//gets datagridview1
注意:如果您在运行时动态创建 DataGridView 控件,这是一种完全有效的方法。但是,如果您在设计器中创建它们,那么就像 Tim 所说,您应该给它们一个更有意义的名称并直接引用它们。
尝试这个
DataGridView dg = (DataGridView)this.Controls.Find("datagridview"+ n.ToString() , true);