none
C# Combobox 怎么在dropdown弹出时,按delete键就可以删除鼠标指向的item RRS feed

  • 问题

  • 想实现当Combobox下拉框弹出时,按delete键就删除鼠标指向的item.

    从其它地方看到以下代码

    const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
    PropertyInfo hl = box.GetType().GetProperty("HighlightedItem", flags);

    但是Combobox的类库说明里没有找到HighlightedItem这个属性。

    请问,如何获取鼠标指向的Item?

    2018年3月27日 7:46

答案

全部回复

  • (1) 從 BindingFlags 就可以看出來這是個 NonPublic (非公開) 的屬性, 所以文件上沒有還滿正常的

    (2) 那個 HighlightedItem 名稱恐怕是寫錯, 我查了幾個 Combobox (Windows Forms, Web Forms, WPF), 其中只有 WPF 的 Combobox 有個私有的 private ComboBoxItem HighlightedElement property , 有可能是指這一個。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2018年3月27日 17:55
  • Hi,

    感谢在MSDN论坛发帖。

    据我所知WPF里面引用的类库 都是 System.Windows.Controls namespace, winform 下面的类库 是System.Windows.Forms。

    你可以根据这两个不同,来判断这个combobox 的highlight 是不是winform的?

    根据搜索,的确WPF下面是由的highlight 属性,winform 下面是没有的。

    https://msdn.microsoft.com/en-us/library/system.windows.controls.comboboxitem.ishighlighted(v=vs.90).aspx

    如果是WPF下面的combobox, 你可以参考下面的解决方案,来获取这个私有的属性。

    https://stackoverflow.com/questions/2723977/in-a-combobox-how-do-i-determine-the-highlighted-item-not-selected-item

    Best Regards,

    Hart


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年3月28日 6:08
    版主
  • (1) 從 BindingFlags 就可以看出來這是個 NonPublic (非公開) 的屬性, 所以文件上沒有還滿正常的

    (2) 那個 HighlightedItem 名稱恐怕是寫錯, 我查了幾個 Combobox (Windows Forms, Web Forms, WPF), 其中只有 WPF 的 Combobox 有個私有的 private ComboBoxItem HighlightedElement property , 有可能是指這一個。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    看起来,winform下的Combobox无法实现按键删除鼠标指向的item这个需求了。
    2018年3月28日 16:12
  • Hi,

    感谢在MSDN论坛发帖。

    据我所知WPF里面引用的类库 都是 System.Windows.Controls namespace, winform 下面的类库 是System.Windows.Forms。

    你可以根据这两个不同,来判断这个combobox 的highlight 是不是winform的?

    根据搜索,的确WPF下面是由的highlight 属性,winform 下面是没有的。


    如果是WPF下面的combobox, 你可以参考下面的解决方案,来获取这个私有的属性。


    Best Regards,

    Hart


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    感谢回复,看来winform下的Combobox无法实现需求了,我试试看,能不能用winform调用wpf的combobox控件。

    尴尬,账号还未验证,引用里的链接删掉了

    2018年3月28日 16:16
  • Hi,

    如果你想在winform 中使用wpf的控件,你可以参考下面的方案。

    Walkthrough: Hosting a WPF Composite Control in Windows Forms

    https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/walkthrough-hosting-a-wpf-composite-control-in-windows-forms

    Walkthrough: Creating New WPF Content on Windows Forms at Design Time

    https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/walkthrough-creating-new-wpf-content-on-windows-forms-at-design-time

    Best Regards,

    Hart


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 小鬼006 2018年3月30日 2:00
    2018年3月29日 6:04
    版主
  • 感谢指导
    2018年3月30日 2:00