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

本文关键字:组合 列表 选择 鼠标 项目 | 更新日期: 2023-09-27 18:18:41

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

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

当用户单击某项时,如何再次拖放列表?

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

也许这会有所帮助:

    <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中的控件,需要调用Dispatcher。上面的代码正好满足了您的要求。