C# 在加载项中的WPF组合框中保持焦点

C# 在加载项中的WPF组合框中保持焦点,c#,wpf,wpf-controls,add-in,C#,Wpf,Wpf Controls,Add In,我有一个单词中的组合框addin。组合框的内容通常足够长,可以覆盖在Word的缩放滑块控件上。但是,直接在缩放控件上选择一个项目(从视图中隐藏)会使缩放控件获得焦点,关闭组合框,并更改缩放设置!组合框中的选择未被触及 如何使组合框保持焦点并将选定值更改为选定的项目(在缩放栏上)?谢谢……我在WPF中也遇到了同样的问题,它似乎与Word处理子窗口事件的方式有关。每当下拉列表(或任何其他“弹出”控件,如上下文菜单)在Word的某个窗口上绘制时,它会变得有点贪婪,并假设您正在单击底层窗口 我不太了解消

我有一个单词中的组合框addin。组合框的内容通常足够长,可以覆盖在Word的缩放滑块控件上。但是,直接在缩放控件上选择一个项目(从视图中隐藏)会使缩放控件获得焦点,关闭组合框,并更改缩放设置!组合框中的选择未被触及


如何使组合框保持焦点并将选定值更改为选定的项目(在缩放栏上)?谢谢……

我在WPF中也遇到了同样的问题,它似乎与Word处理子窗口事件的方式有关。每当下拉列表(或任何其他“弹出”控件,如上下文菜单)在Word的某个窗口上绘制时,它会变得有点贪婪,并假设您正在单击底层窗口

我不太了解消息/事件在Windows中的工作方式,也没有时间找出解决此问题的最佳方法,但根据某个地方关于创建无边界窗口的帖子,我尝试修改WinForms用户控件的窗口样式,如下所示(Windows样式常量自):

奇怪的是(或者对于更熟悉Windows消息的人来说可能不那么奇怪),下拉列表确实会响应键盘事件(例如,单击弹出列表,然后使用键盘选择项目)

从功能上看,上面的代码似乎没有问题……但我不确定说用户控件是一个弹出窗口而不是子控件会有什么后果

与此相关的另一个帖子是

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams p = base.CreateParams;
            if (!DesignMode)
            {
                unchecked
                {
                    p.Style = (int)(WindowStyles.WS_VISIBLE |
                                    WindowStyles.WS_POPUP |
                                    WindowStyles.WS_CLIPSIBLINGS |
                                    WindowStyles.WS_CLIPCHILDREN);
                }
            }
            return p;
        }
    }