1

我正在尝试做这样的事情:

for (int i = 1; i < nCounter ; i++)
{
    string dvName = "dv" + i.ToString();
    System.Windows.Forms.DataGridView dvName = new DataGridView();
    // other operations will go here..
}

你可以猜到,我想做的是 at i == 1,创建一个DataGridViewwith name dv1,并且 at i == 2,创建一个DataGridViewwith name dv2,但我做不到。

Visual Studio squiggles 说“一个名为 dvName 的局部变量已在此范围内声明”我还尝试了以下操作:

for (int i = 1; i <nCounter ; i++)
{
    System.Windows.Forms.DataGridView dv & i = new DataGridView();
    // other operations will go here..
}

但是 VS 再次出现曲线,我希望你明白我想要完成的事情。谁能建议我该怎么做?

4

3 回答 3

1

你真正需要的是一个Dictionary<int, DataGridView> grids. 将其填充到您的 for 循环 ( grids[i] = new DataGridView();) 中,然后使用所需的网格 ( grids[someCalculatedIndex])

希望这可以帮助。

于 2012-05-30T09:07:35.313 回答
1

尝试一个可以保存变量的数据结构,例如dict等

 System.Collections.Generic.Dictionary<string,System.Windows.Forms.DataGridView>
          grids = new Dictionary<string,System.Windows.Forms.DataGridView>();

for (int i = 1; i <nCounter ; i++)
{
    grids.Add("dv" + i.ToString(), new DataGridView());            
}

// to work on grid 1
DataGridView grid1 = grids["dv1"];
// so on
于 2012-05-30T09:09:39.523 回答
0

所以你正在尝试动态创建变量名?那是不可能的。为什么不使用数组或列表(甚至字典)?还是您只想设置控件的名称?

var list = new List<DataGridView>();

for (int i = 1; i <nCounter ; i++)
{
    System.Windows.Forms.DataGridView dvName = new DataGridView();
    dvName.Name = "dv" + i.ToString();
    list.Add(dvName);
    // other operations will go here..
}

foreach (var dv in list)
{    
    ...do something... 
}

DataGridView secondDv = list.Single(dv=>dv.Name == "dv2");
secondDv.DoSomething()

不清楚你想做什么...

于 2012-05-30T09:10:01.893 回答