我在名为 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
你能帮忙吗?
答案 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];
}