gpt4 book ai didi

c# - 在鼠标离开事件时关闭 ComboBox DropDown

转载 作者:行者123 更新时间:2023-11-30 16:58:52 26 4
gpt4 key购买 nike

在开发一个简单的 Windows 窗体 UI 应用程序时,我试图创建一个效果来显示和关闭鼠标事件的下拉菜单。

比如我可以通过设置 comboBox.DroppedDown = true;MouseMove 事件上打开下拉菜单但是,当我在 MouseLeave 事件上设置 comboBox.DroppedDown = false; 以关闭它时,这同样不起作用。

不知道这里到底需要做什么。问题出在 MouseLeave 上,下拉菜单不会失去焦点,因此除非您从列表中选择一项,否则它不会关闭。它等待用户从列表中选择一个项目。如果它可以在 MouseLeave 上失去焦点,就可以了。请提出任何建议。

最佳答案

首先我必须说我不是一个经验丰富的程序员而且我刚刚开始使用 WPF。我知道这个问题已有两年历史,但我遇到了同样的问题,我发现我可以使用事件 IsMouseDirectlyOverChanged 关闭 ComboBox 的下拉列表。对我来说真正烦人的是我有一个 ComboBox 和一个按钮,如果在没有进行选择的情况下打开下拉菜单并且我想单击按钮,那么在第一次单击时没有任何反应,因为在第一次单击下拉菜单时菜单正在关闭。在此之后我可以点击按钮。

对我来说它工作正常:如果我在任何方向(上、左、下、右)移动鼠标,下拉列表将关闭,并且消息将附加到文本框控件。我不知道这个事件是否是新的,或者它也可以在 2 年前使用。

private void comPortList_IsMouseDirectlyOverChanged(object sender, DependencyPropertyChangedEventArgs e)
{

if (comPortList.IsDropDownOpen==true)
{
txtMsgBox.AppendText("MouseDirectlyOverChanged\n");
txtMsgBox.ScrollToEnd();
comPortList.IsDropDownOpen = false;
}

}

当您的鼠标指针悬停在打开的 ComboBox 上时,会触发此事件。如果不打开下拉列表,则不会触发。

我看到的另一件事是,当您进入打开的 ComboBox 以及离开它时,都会触发此事件。如果我在检查 IsDropDownOpen 属性是否为真之前追加文本,当鼠标指针离开打开的 ComboBox 时,文本“MouseDirectlyOverChanged”将在我的文本框中出现两次。

如果我评论这行:

comPortList.IsDropDownOpen = false;

并在 if 之前保留 AppendText 和 ScrollToEnd,文本将只追加一次。

希望对您有所帮助:)

关于c# - 在鼠标离开事件时关闭 ComboBox DropDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com