做出选择后重置comboxbox选择

时间:2018-07-19 18:17:50

标签: wpf combobox

我有一个用数据集中的数据创建的组合框

foreach(var item in ds.MiDESValues)
        {
            string comboboxtext = ds.MiDESValues.Rows[k][1].ToString();
            sFactorCB.Items.Add(comboboxtext);
            k++;
        }

在选择更改事件上,它将使用该选择填充列表框

 private void sFactors_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        string add = sFactorCB.SelectedValue.ToString();

        var svalue = ds.MiDESValues.Rows[0][2].ToString();
        int Svalue = int.Parse(svalue);

        SValue.Add(svalue);
        SelectionListBox.Items.Add(add);
        SelectionBox.Add(add);


        // when a new item is added to Selection list box, select it and show it
        // this will keep the last item highlighted and as the list grows beyond
        // the view of the list box, the last item will always be shown
        SelectionListBox.SelectedIndex = SelectionListBox.Items.Count - 1;
        SelectionListBox.ScrollIntoView(SelectionListBox.SelectedItem);


    }

然后,该列表框用于填充下一页使用的列表框。如果我导航到下一页然后又导航回去,则组合框仍会显示我为此所做的最后一次选择,列表框将填充该值。 我已尝试在sFactors_SelectionChanged事件结束时将组合框的selectedindex设置为sFactorCB.SelectedIndex = -1;,但得到System.NullReferenceException。如何使组合框重置为未选择的项目状态?谢谢

1 个答案:

答案 0 :(得分:0)

实际上,您做得正确。要清除选择,请将SelectedIndex设置为-1或SelectedItem设置为null。

问题在于,一旦执行此操作,就会再次调用sFactors_SelectionChanged,并且由于没有当前选择,因此SelectedValue属性为null,从而导致以下操作失败:

string add = sFactorCB.SelectedValue.ToString();

在未选择任何内容的情况下,如何解决此类问题取决于您的预期结果。最简单的操作是仅检查处理程序开始时未选择的任何内容,然后简单地返回。

private void sFactors_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (sFactorCB.SelectedIndex == -1 || sFactorCB.SelectedValue == null)
        return;

    string add = sFactorCB.SelectedValue.ToString();
...