-3

我试图通过遍历值并找到与我的直径变量匹配的值来分配组合框索引。(组合框项目根据直径而变化,例如,某些管道类型只有 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;
4

1 回答 1

1

不是 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;
                    }
                }
于 2015-12-18T23:38:54.500 回答