当鼠标选择项目时,自动下拉组合框列表

时间:2011-12-22 14:34:46

标签: c# wpf

当从列表中选择特殊项目时,我需要重新打开组合框列表。在这段代码中,我假设当选择一个项目时,组合列表将重新打开。它可以使用键盘,但我的鼠标有问题。

        private void cbPredefinedReports_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            cbPredefinedReports.IsDropDownOpen = true;
        }

当用户点击某个项目时,如何再次删除列表?

1 个答案:

答案 0 :(得分:1)

也许这会有所帮助:

    <ComboBox Name="comboBox1" 
                    DropDownClosed="comboBox1_DropDownClosed" 
                    SelectionChanged="comboBox1_SelectionChanged" />

你的代码

    private bool keepOpen = false;
    private void comboBox1_DropDownClosed(object sender, EventArgs e)
    {
        new Thread(() =>
        {
            comboBox1.Dispatcher.Invoke(new Action(() =>
            {
                // do your IF logic here
                if (keepOpen)
                {
                    comboBox1.IsDropDownOpen = true;
                    keepOpen = false;
                }
            }), null);
        }).Start();
    }

    private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        keepOpen = true;
    }

您需要一个线程的原因是因为您无法在DropDownClosed事件中重新打开组合框,但您可以在另一个线程中执行此操作。但是,要从另一个线程更新WPF中的controlf,您需要调用Dispatcher。上面的代码完全符合您的要求。