2014-01-23 104 views

回答

6

是的,這是可能的LINQ

var text = this.Controls.OfType<Control>() 
       .Where(c => c.TabIndex == index) 
       .Select(c => c.Text) 
       .First(); 

如果你想擴展方法來做到這一點:

public static class MyExtensions 
{ 
    public static string GetElementTextByTabIndex(this Control.ControlCollection controls,int index) 
    { 
     return controls.OfType<Control>() 
         .Where(c => c.TabIndex == index) 
         .Select(c => c.Text).First(); 
    } 
} 

string text = this.Controls.GetElementTextByTabIndex(1); 
+0

謝謝。這真的很奇怪,但我沒有在互聯網上找到答案) – DiA

+0

@DiA 你將如何指定它開始於第13個標籤索引文本框的位置,並以LINQ結束於第33個標籤頁索引? – user2101411

+0

完全不相關的排序,但我想從第13個標籤索引文本框開始獲取文本,並在第33個(最後一個文本框)結束。 – user2101411

0

嘗試。

string tabText= tabControl1.SelectedTab.Text; 
    MessageBox.Show(tabText); 
0

如果你不想使用LINQ,這樣可以做到這一點:

int index = 1;  
string text; 

foreach(Control control in Controls) 
{ 
    if(control.TabIndex == index) 
    { 
     text = control.Text; 
     break; 
    } 
}