2016-06-18 68 views
0

你好,我正在一些個人項目, 我有很多組合框在我的項目中,其名稱是combobox1,combobox2等.. 我試圖做的是,分別獲取combobox.text值並據此做一些工作。c#從使用循環獲取值像combobox [i],i ++

這是我的代碼如下;

for (i = 1; i <= geneList.Length; i++) 
     { 

      baserequest = "/" + comboBox[i].Text + ".docx"; 
      sources.Add(new Source(new WmlDocument(basesource + geneList[i] + baserequest), false)); 
baserequest=""; 
      DocumentBuilder.BuildDocument(sources, Path.Combine(tempDi.FullName, "Output.docx")); 

     } 

這樣,實際上不起作用。我搜索了但我認爲我在搜索某物,因爲我所能得到的是關於迭代項目的事情,但我想要做的就是這個;

組合框[I]。文本

非常感謝你。

+0

如果您的組合框命名爲comboBox1,comboBox2 ....則不能使用comboBox [2]等sintax引用comboBox2。這個語法的意思是..給我第三個組合框存儲在一個組合框數組中,包含至少3個元素。 – Steve

+0

那麼我能做什麼,它的作品,如果我寫如 baserequest =「/」+ comboBox1.Text +「.docx」; 但它不是一個優化的解決方案。我必須爲每個組合框編寫這條線。 – Ozzzy

回答

0

如果您的組合框命名爲comboBox1,comboBox2 ....那麼您無法使用像comboBox[2]這樣的語法引用comboBox2。這句法意味着.. 給我存儲在組合框數組第三個組合框(這應該至少包含3片)

所以,如果你真的想用這個語法,你需要在某個地方創建一個組合框數組你的代碼。調用InitializeComponent例如

public class Form1: Form 
{ 
    // declare the array as a global variable 
    private ComboBox[] combobox; 

    public Form1() 
    { 
     // Create and initialize all the elements of your form 
     // according to the properties set in the WinForms Designer 
     InitializeComponent(); 

     // Choose all the individual comboboxes that you want to use 
     // inside your loops in the remainder of your code 
     combobox = new ComboBox[] { comboBox1, comboBox2, comboBox3 }; 
    } 

    // all the code of your Form1 follows..... 
} 

最後一個音符後:您可以使用不同的陣列來創建你的循環。這個數組被命名爲geneList,它應該保持與組合框陣列同步。這意味着兩個數組應該有相同數量的元素,否則(如果geneList數組大於組合框數組,則會得到ArgumentOutOfRangeException)。此外數組索引開始在索引0而不是1所以平時環路與此語法創建

for (i = 0; i < geneList.Length; i++) 

否則,如果你從1開始,因爲你現在做什麼,你跳過數組中的第一個元素的最後一個循環搜索對於不存在的元素。

+0

非常感謝Steve。它實際上似乎工作:) – Ozzzy

+0

小心。你使用一個不同的數組來循環命名的_geneList_,並且你從索引1開始循環。如果組合框數組和基因組列表之一不保持同步,這可能是非常危險的(這意味着geneList數組應該比組合框數組大1 ) – Steve

相關問題