C# 在C语言中连接控件名#

C# 在C语言中连接控件名#,c#,.net,datagridview,C#,.net,Datagridview,我不知道怎么说,我有3个datagridview控件(名为datagridview1,datagridview2&datagridview3)。我的问题是我可以连接这些控件的名称吗 我的意思是,有没有一种方法可以这样称呼它:datagridview(n)或datagridview+n 我正在使用winforms 提前谢谢 我认为您想要的是找到具有动态名称的控件 也许是这样的: Control match = ParentControl.Controls["datagridview" + n];

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

我的意思是,有没有一种方法可以这样称呼它:
datagridview(n)或datagridview+n

我正在使用winforms


提前谢谢

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

也许是这样的:

Control match = ParentControl.Controls["datagridview" + n];
例如,如果您的所有数据网格都位于一个名为“MyPanel”的面板中,那么您可以执行以下操作:

DataGridView match = MyPanel.Controls["datagridview" + n] as DataGridView;
public DataGridView GetDataGridViewForTabNumber(int n){
    Control[] matches = this.Controls.Find("datagridview" + n, true);
    if(matches.length == 0) 
        return null;
    return matches[0] as DataGridView;
}

但是,如果数据网格不都属于同一父控件,则可以使用以下方法查找它们:

注意:Controls.Find方法返回一个数组,因此您需要选择第一个元素(假设您的控件名是唯一的),在尝试访问第一个元素之前,还可能需要检查数组是否有任何值


如果要将其包装到函数中,可以执行以下操作:

DataGridView match = MyPanel.Controls["datagridview" + n] as DataGridView;
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控件,那么这是一个非常有效的方法。但是,如果您是在designer中创建它们,那么,正如Tim所说,您应该给它们一个更有意义的名称,并直接引用它们。

试试这个

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


你为什么要这么做?如果您的建筑是动态控制的,我可以看到点,否则像Tim一样,我可以使用可读的名称。使用与其用途相关的有意义的名称。我有3个tabpage,每个tabpage包含一个datagridview,我想在当前tabpage中调用datagridview,但不想每次更改tabpage时都调用这些datagridview的名称。您可以将tabpage的Tag属性设置为datagridview引用。然后您可以执行以下操作:tabControl.TabChanged+={var grid=tabControl.SelectedTabPage.Tag作为DataGridView;grid.DoSomething();}我在designer中创建它们,我希望代码简单,。我有3个tabpage,每个tabpage包含一个datagridview,所以我有一个变量n,它的值基于当前tabpage,所以当tabpage更改时,变量值也会更改,我想使用datagridview+n这样的变量。有可能吗?@user2061086:简单代码?然后只需使用控件的名称来访问它,
datagridview1.CallSomething()@user2061086:是的,这是可能的,我的代码解释了这一点exactly@user2061086当前位置当然有:P别忘了,你可以通过接受/表决我的答案来感谢我。通过这种方式,你将提高自己的声誉,这将有助于提高你下次陷入困境时得到的答案。记住,我们都喜欢互相帮助的社区也是如此。我已经接受了你的答案,不幸的是我没有足够的声誉去投票支持它。再次感谢!