从字符串列表中的元素填充多个组合框

时间:2017-09-19 16:08:35

标签: c# .net combobox

我在名为 inCurves.txt 的文本文件中有一个输入曲线名称列表。 .txt文件显示为:

cmbBox

前两个数字是底部和顶部深度,而余下部分是每个剩余组合框的曲线名称和曲线名称(1 - 6)

我已经编写了一个脚本来填充此.txt中的comboBox,但是当我尝试将string转换为private void btnLoad_Click(object sender, EventArgs e) { try { string CurveNamesInText = ""; char[] delimiter = { '*' }; CurveNamesInText = System.IO.File.ReadAllText(@"C:\Users\Public\inCurves.txt"); string[] crvIn = CurveNamesInText.Split(delimiter); string BottomDepth = crvIn[0]; string TopDepth = crvIn[1]; var combBoxes = this.Controls.OfType<ComboBox>().Where(x => x.Name.StartsWith("comboBox")); foreach (var cmbBox in combBoxes) { string yes = Convert.ToString(cmbBox); string number = yes.Replace("comboBox","0"); int i = Convert.ToInt16(number); //error here, comp doesn't like it MessageBox.Show("current number value \n" + number + "\n" + "current i value \n" + i); //cmbBox.Text = crvIn[6-i]; // this is what I'd like to do next } } catch (Exception ex) { MessageBox.Show("Error Loading Curve names \n" + ex.Message + "\n" + ex.StackTrace); } } ,然后转换为整数时收到错误。

  

输入字符串的格式不正确)

cmbBox.Text = crvIn[i];

我想在crvIn列表中为每个comboBox分配一个元素。理想情况下,这样的事情:

Subrep
你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

问题是您正在尝试将整个对象ComboBox转换为字符串,这将仅生成类/类型ComboBox的全名加上项目计数:

  

&#34; System.Windows.Controls.ComboBox Items.Count:0&#34;

您也可以在调试器中看到这一点。

  

我想将crvIn列表中的元素分配给每个comboBox

我想如果你想将每个值添加到不同的组合框,你可以使用for循环并添加项目。如果要使它们可选,则需要将它添加到项目中。

首先,您需要从查询中创建一个列表。最后添加ToList()

var combBoxes = this.Controls.OfType<ComboBox>()
                    .Where(x => x.Name.StartsWith("comboBox")).ToList();

for (int i = 0; i < combBoxes.Count; i++)
{
    combBoxes[i].Text = crvIn[i + 2];
}