【问题标题】:ComboBox doesn't raise keyboard and mouse events as expectedComboBox 未按预期引发键盘和鼠标事件
【发布时间】:2011-06-13 19:40:12
【问题描述】:

我使用 Silverlight 4.0,但在使用 ComboBox 控件时遇到了问题。我想实现一个弹出菜单,无需单击鼠标即可显示和隐藏自身。它应该在我将光标放在其区域上时显示 - 这个 prt 效果很好。然后,只要将鼠标指针放在其区域之外一段时间,它就应该隐藏。我用 MouseEnter 和 MouseLeave 事件实现了它。 我的问题是 ComboBox - 在我看来,这个控件的行为很奇怪。通常,当我将光标放在它上面时,我希望它会引发 MouseEnter 事件,而当我将鼠标光标放在其他任何地方时,它会引发 MouseLeave 事件。实际情况不同:每当我单击组合框时,它就会打开并显示选项列表,并立即发送 LostFocus 和 MouseLeave 事件。所以看起来控件失去了键盘焦点并且鼠标指针已移出其区域,而实际上 optins 的组合框列表是打开且处于活动状态的并且其中具有键盘焦点。

所以问题是我如何在我的程序中知道组合框中发生了什么? 为了正确隐藏我的弹出菜单,我需要知道组合框中的选项列表何时打开或关闭。我看不到此文档或任何其他文档的任何事件。 (想要的行为是:如果组合框关闭,我会根据鼠标光标的位置隐藏我的弹出菜单。如果组合框打开,我永远不会隐藏我的弹出菜单,直到用户在组合框中选择某些内容,或关闭组合框。 )

另外,如果您对第三方组合框替换有很好的经验,它的外观和工作方式相似,并且会引发我需要的事件,请告诉我。

【问题讨论】:

    标签: silverlight combobox mouseleave lostfocus


    【解决方案1】:

    MSDN 列出了两个您可能想要查看的 ComboBox 事件。

    http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox_events(v=VS.95).aspx

    DropDownClosed 在组合框的下拉部分关闭时发生。
    DropDownOpened 在组合框的下拉部分打开时发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多