我正在尝试做这样的事情:
for (int i = 1; i < nCounter ; i++)
{
string dvName = "dv" + i.ToString();
System.Windows.Forms.DataGridView dvName = new DataGridView();
// other operations will go here..
}
您可以猜到,我要做的是i == 1
,创建一个名为DataGridView
的{{1}},并在dv1
创建{{1}名字为i == 2
的名字,但我不能。
Visual Studio squiggles说 “一个名为dvName的局部变量已在此范围内被推迟” 我也尝试了以下内容:
DataGridView
但是VS再次摇摆不定,我希望你能理解我想要完成的事情。任何人都可以建议我怎么做?
答案 0 :(得分:1)
你真正需要的是Dictionary<int, DataGridView> grids
。在for循环(grids[i] = new DataGridView();
)中填充它,然后使用所需的网格(grids[someCalculatedIndex]
)
希望这有帮助。
答案 1 :(得分: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
答案 2 :(得分: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()
不清楚是否想要做...