2015-12-09 175 views
0

我有五個選項卡。每個選項卡都有自己的表格。我想用一個函數填充所有選項卡。該功能觸發SelectedIndexChanged用tabcontrol動態填充ListView

如何在當前選項卡中選擇表格?我需要它來動態填充所有表格。

我與LINQ試過這樣:

Controls.OfType<ListView>() 
    .FirstOrDefault(c => c.TabIndex == tabControl.SelectedIndex); 

但ofcourse這是行不通的。 幫助表示讚賞。

+0

您是否嘗試過對嵌套控件遞歸調用? – slawekwin

回答

1

取而代之的是形式Controls的,使用TabControl.SelectedTabControls這樣

var listView = tabControl.SelectedTab.Controls.OfType<ListView>().FirstOrDefault(); 
+0

我只是想回答這個問題作爲我自己問題的答案。剛剛發現,我有完全相同的代碼行。不過謝謝。這將適用於我的代碼,但是如果在選項卡中有多個表,則可能需要將'.FirstOrDefault()'部分更改爲另一個。 – Patrick2607

0

處理的Selected事件您TabControl和遞歸搜索您ListView。即使它嵌套在另一個控件中也是如此,例如a GroupBox

private void tabControl1_Selected(object sender, TabControlEventArgs e) 
{ 
    ListView listView = this.FindListView(e.TabPage.Controls); 
} 

private ListView FindListView(Control.ControlCollection controls) 
{ 
    ListView result = null; 
    foreach (Control control in controls) 
    { 
     result = control as ListView; 
     if (result == null) 
     { 
      result = FindListView(control.Controls); 
     } 
     if (result != null) 
     { 
      break; 
     } 
    } 
    return result; 
}