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..
}

ご想像のとおり、私がやろうとしているのは、でi == 1、名前を付けて作成し、で、でDataGridView名前を付けて作成することですが、できません。dv1i == 2DataGridViewdv2

Visual Studioは、「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

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 に答える
1

本当に必要なのはですDictionary<int, DataGridView> grids。forループ(grids[i] = new DataGridView();)に入力し、後で必要なグリッド(grids[someCalculatedIndex])を使用します

お役に立てれば。

于 2012-05-30T09:07:35.313 に答える
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 に答える