2016-06-18 30 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

相关问题