C# for 循环文本比较

C# for loops text compare

我正在尝试通过遍历值并找到与我的直径变量匹配的值来分配组合框索引。 (组合框项目根据直径而变化,例如,某些管道类型只有 0.5"、1.0",而其他管道可能有 0.75" 的中间值)。

代码比较似乎永远不会实现(因此 myIndex 从未在初始化之外分配任何内容)尽管当我在其上放置断点时,文本字符串在适当的迭代中匹配。

int myIndex = 0;

for (int i = 0; i <= cboDiameter.Items.Count-1; i++)
{
    if (cboDiameter.GetItemText(cboDiameter.Items[i]) == formPipe.diameter.ToString()) 
    {
        //this line never executes, even when there's seemingly a text match
        myIndex = i;
    }
}
cboDiameter.SelectedIndex = myIndex;

这是我用来指定管道直径的内容,但它被截断了。 (例如,当组合框文本为“1.0”时,管道直径被分配为“1”

//assign the value of the dropdown to the object
double.TryParse(cboDiameter.GetItemText(cboDiameter.SelectedItem), out value);
formPipe.diameter = value;

不是 100% 确定为什么双精度数被截断为整数,但为了修复它,我将组合框值解析为另一个双精度数并只比较两个双精度数而不是比较字符串:

for (int i = 0; i <= cboDiameter.Items.Count-1; i++)
                {
                    double.TryParse(cboDiameter.GetItemText(cboDiameter.Items[i]), out val);
                    if (val == formPipe.diameter)
                    {
                        myIndex = i;
                    }
                }