2012-05-30 4 views
1

Я пытаюсь сделать что-то вроде этого:создание динамических переменных в C#

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 с именем dv1, и в i == 2, создайте DataGridView с именем dv2, но я не могу.

Визуальные загогулины студии говорят «локальная переменная с именем dvName уже delared в этой области» Я также попытался следующие:

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

Но VS загогулины снова, я надеюсь, вы поняли, что я пытаясь выполнить. Может ли кто-нибудь предложить, как я могу это сделать?

ответ

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() 

Не ясно, хотите вы хотите сделать ...

1

Что вам действительно нужно, это Dictionary<int, DataGridView> grids. Заполните его в своей петле (grids[i] = new DataGridView();), а затем, используя необходимую сетку (grids[someCalculatedIndex])

Надеюсь, это поможет.

1

попробовать структуру данных, где вы можете провести свои переменные, например ДИКТ т.д.

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 
Смежные вопросы