2017-09-23 24 views
3

在標籤頁上,有33個文本框,我試圖通過tabindex 13到33來獲取文本框的值。我已經將所有標籤索引設置爲這些數字,但由於某種原因無法使其工作。從一個特定的標籤索引開始,並在最後停止

的代碼我目前有:

int startTabIndex = 13; 
int endTabIndex = 33; 

foreach (Control ctrl in Controls) 
{ 
    if (ctrl is TextBox) 
    { 
     if (ctrl.TabIndex == startTabIndex || ctrl.TabIndex <= endTabIndex) 
     { 
      MessageBox.Show(ctrl.Text); 
     } 
    } 
} 

MessageBox.Show(ctrl.Text)只是一個測試,看看它是否工作。

此外,這可以通過使用LINQ來完成,以及如何?


我改變了我的代碼使用LINQ搶每次由史蒂夫提供的答案文本框的值(名稱和文本)。我該如何去檢查值是否已通過(如在消息框中顯示文本或其他內容)?

int startTabIndex = 13; 
int endTabIndex = 33; 

System.Collections.Generic.Dictionary<string, string> dictionary = Controls.OfType<TextBox>() 
    .Where(t => t.TabIndex >= startTabIndex && t.TabIndex <= endTabIndex) 
    .Select(x => new System.Collections.Generic.KeyValuePair<string, string>(x.Name, x.Text)) 
    .ToDictionary(z => z.Key, z => z.Value); 

foreach (var d in dictionary) 
{ 
    MessageBox.Show(d.Value); 
} 

當我點擊插入按鈕時,沒有任何反應。有什麼我失蹤?


史蒂夫給了我一個很好的例子,它的工作原理,但它開始在文本框(tabindex屬性33)結束和向後繼續一路開始(tabindex屬性13)。如何扭轉這種情況?

+0

提示未來的問題:如果您預先指定了目標,則不需要通過來回編輯並追加「更新」部分。那些沒有更新,那些是需求的變化。在開發人員的工作上,需求變更可能會引起回答者的挫折,就像他們在開發人員工作上這樣做一樣。如果您想了解更多信息,請參閱[相關meta post](https://meta.stackexchange.com/q/43478/238706)。 – Palec

回答

3

你可以做到這一點與OfType一行(只得到文本框)一凡(只選擇tabindex屬性範圍內的文本框),最後一個選擇,從文本框的Text屬性提取字符串

int startTabIndex = 13; 
int endTabIndex = 33; 

List<string> texts = Controls.OfType<TextBox>() 
          .Where(t => t.TabIndex >= startTabIndex && 
             t.TabIndex <= endTabIndex) 
          .OrderBy(b => b.TabIndex) 
          .Select(x => x.Text).ToList(); 

爲了得到一個Dictionary<string,string>代碼可改爲

Dictionary<string, string> dic = Controls.OfType<TextBox>() 
       .Where(t => t.TabIndex >= startTabIndex && 
          t.TabIndex <= endTabIndex) 
       .OrderBy(b => b.TabIndex) 
       .Select(x => new KeyValuePair<string,string>(x.Name, x.Text) 
       .ToDictionary(z => z.Key, z => z.Value); 

foreach(KeyValuePair<string,string>kvp in dic) 
     MessageBox.Show($"Key={kvp.Key} = {kvp.Value}"); 

UPDATE
新增也是排序依據,以確保枚舉根據TabIndex來回答OP的最後請求(感謝CodingYoshi)。

+0

我將如何將返回的值分配給'KeyValuePair '? – user2101411

+0

請詳細解釋一下,因爲這個KeyValuePair有點不清楚。關鍵和價值是什麼? – Steve

+0

對不起。關鍵是文本框的名稱,值是文本框的文本。 – user2101411

相關問題