2011-12-21 68 views
0

我正在編寫一個從UserControl派生的自定義控件。在這裏有一些我想阻止訪問的控件(一些文本框,組合框)。只有當用戶點擊「編輯」按鈕時,纔可以進行交互。用另一個控件隱藏UserControl中的子控件

我讀了約KeyPreview但它只適用於窗體。我發現將所有事件重定向到一個常見的處理程序,以檢查編輯模式是否啓用了太多麻煩。

是否有任何方法可以將另一個透明控件放在其他控件上(Z順序),這將攔截所有鼠標和按鍵事件,但正常呈現控件?或者也許有不同的解決方案?

編輯: 我想在覆蓋其他控件的控件上接收鼠標事件。我需要這些用於拖放和移動自定義控件。

+0

通常我會在用戶控件中使用一個FormView,當用戶點擊編輯時,它將模式從'ReadOnly'改變爲'Edit'。所有其他方法比這更麻煩。 – 2011-12-21 12:34:33

+0

@TimSchmelter:這將與winforms一起工作嗎? – XORcist 2011-12-21 12:42:39

+0

執行此操作的正常方法是將控件放入「Panel」中 - 設置panel.Enabled = false將禁用用戶與控件的交互。控件將顯示爲灰色,這不是您所要求的,但可能是大多數用戶期望的。 – Justin 2011-12-21 12:43:39

回答

1

你可以在你的UserControl中寫入你的Enabled屬性並使用它。

private new bool Enabled 
     { 
      get { return _enabled; } 
      set 
      { 
       foreach (System.Windows.Forms.Control c in this.Controls) 
       { 
        if (c is SomeTypeThatShouldBeExcluded) 
         continue; 
        c.Enabled = value; 
       } 
       _enabled = value; 
      } 
     } 
+0

這非常接近我需要的東西。謝謝。 – XORcist 2011-12-21 13:18:24

相關問題