在C#中连接控件名称

时间:2013-05-03 10:12:17

标签: c# .net datagridview

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

我的意思是有一种方式我可以这样称呼它:datagridview(n) or datagridview + n

我正在使用winforms。

提前致谢!

2 个答案:

答案 0 :(得分: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说的那样,你应该给它们一个更有意义的名字并直接引用它们。

答案 1 :(得分:0)

试试这个

  

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