1

我不知道怎么说,我有 3 个 datagridview 控件(名为datagridview1, datagridview2& datagridview3)。我的问题是我可以连接这些控件的名称吗?

我的意思是有没有办法可以这样称呼它:datagridview(n) or datagridview + n

我正在使用winforms。

提前致谢!

4

2 回答 2

0

我认为您想要的是找到具有动态名称的控件?

可能是这样的:

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 所说,您应该给它们一个更有意义的名称并直接引用它们。

于 2013-05-03T10:14:39.797 回答
0

尝试这个

DataGridView dg = (DataGridView)this.Controls.Find("datagridview"+ n.ToString() , true);

于 2013-05-03T10:18:15.357 回答