2010-06-02 76 views
0

我在Word插件中有一個組合框。組合框的內容通常足以覆蓋Word的縮放滑塊控件。但是,直接在變焦控制(從視圖中隱藏)選擇一個項目會導致變焦控制變焦,關閉組合框並更改變焦設置!在組合框中的選擇是不變的。在插件中保持焦點在WPF組合框中

如何讓組合框保持焦點並將所選值更改爲選中的項目(通過縮放欄)?謝謝...

回答

1

我已經遇到了與WPF的這個相同的問題,它看起來像它與Word處理來自子窗口的事件的方式有關。每當下拉列表(或可能是任何其他「彈出」控件,如上下文菜單)被繪製在Word的某個窗口中時,它會變得有點貪婪,並假定您單擊了底層窗口。

我不知道有關Windows中的消息傳遞/事件如何工作,我還沒有時間找出解決問題的最佳方法,但是基於創建無邊界窗口的帖子,我嘗試過修改窗口樣式的WinForms用戶控件如下(從http://www.pinvoke.net/default.aspx/Constants/Window%20styles.html 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; 
     } 
    } 

奇怪的是(或者也許不那麼好奇的人們比較熟悉的Windows消息),下拉DOES響應鍵盤事件(例如點擊彈出列表,然後使用鍵盤選擇一個項目)。

功能上似乎沒有上述代碼的問題......但我不確定是什麼後果說用戶控件是彈出而不是孩子。

另一篇與此相關的帖子是WPF ComboBox doesn't stay open when used in a Task Pane