2016-08-10 13 views
0

各TabPageにdataGridViewを追加する際に問題があります。tabControl内の各TabPageにDataGridViewを追加する

私は、例えば

 List<string> lista = new List<string>(); 
     lista.Add("test1"); 
     lista.Add("test2"); 
     lista.Add("test3"); 

     foreach (var p in lista) 
     { 
      tabControl_Roz.TabPages.Add(p); 

     } 

リスト からTabPagesを追加しているそして今、私はそれらのそれぞれのためにDataGridViewのを追加したいです。 DataGridViewの名前は次のとおりです。

 dataGridView_p 

ここで、pはtabPageの名前です。 誰かが私にそれをどのように達成できるか教えてもらえますか?

答えて

1

作成したTabPageにDataGridViewを追加するだけです。

tabControl_Roz.TabPages[i].Controls.Add(new DataGridView(){ 
      Name="dataGridView_" + lista[i], 
      Dock=DockStyle.Fill, 
      DataSource = xxx}); 

それとも最初のTabPageのための例として:このためには、より良いのDataGridViewを作成しながら、あなたはそれを追加することができますいずれかのデータソースを満たすために...代わりのforeachのループのために

List<string> lista = new List<string>(); 
    lista.Add("test1"); 
    lista.Add("test2"); 
    lista.Add("test3"); 

    for(int i = 0; i < lista.Count; i++) 
    { 
     tabControl_Roz.TabPages.Add(lista[i]); 
     tabControl_Roz.TabPages[i].Controls.Add(new DataGridView(){ 
      Name="dataGridView_" + lista[i], 
      Dock=DockStyle.Fill}); 
    } 

を使用します(インデックス== 0):

int dataGridViewIndex = tabControl_Roz.TabPages[0].Controls.IndexOfKey("dataGridView_" + "test1"); 
if(dataGridViewIndex >= 0) 
{ 
    DataGridView myTabGridView = tabControl_Roz.TabPages[0].Controls[dataGridViewIndex] as DataGridView; 
    if(myTabGridView != null) 
    { 
     myTabGridView.DataSource = xxx; 
    } 
} 
+0

それは動作しますが、私は、例えばDataGridViewのをどのように使用できるかという別の問題があり、:dataGridView.test1.dataSource = dataTableのは。どうすればこれを達成できますか? – JustSomeNewbie

+1

問題は、Designtimeに慣れているようにDataGridViewに名前でアクセスできないことです。コンパイラは、実行時にDataGridViewを追加するときに、DataGridViewの名前の付け方を知りません。 TabPageのコントロールコレクションで名前で手動で検索する必要があります。編集された答え –

+0

を参照してください。私はTabPages [0] .Controls.Whereでエラーが発生しました。コレクションには "Where"の定義が含まれていません。 – JustSomeNewbie

関連する問題