2011-12-21 6 views
0

私はUsercontrolから派生したカスタムコントロールを書いています。その中には、私がアクセスできないようにするいくつかのコントロール(テキストボックス、コンボボックス)があります。ユーザーが「編集」ボタンをクリックしたときにのみ、相互作用が可能になります。他のコントロールでUserControlの子コントロールを非表示

私は約KeyPreviewを読んでいますが、フォームでのみ利用できます。すべてのイベントを共通のハンドラにリダイレクトすると、編集モードが有効になっているかどうかを確認できます。

他の透明コントロールを(Z順に)配置する方法はありますか?マウスとキーのイベントをすべて傍受しますが、コントロールは通常どおりレンダリングされますか?それとも別の解決策がありますか?

編集: 他のコントロールをカバーするコントロールでマウスイベントを受け取りたい。ドラッグ&ドロップやカスタムコントロールの移動に必要なものがあります。

+0

通常、ユーザーが編集をクリックしたときに 'ReadOnly'から' Edit'にモードを変更するUserControlでFormViewを使用します。他のすべてのアプローチはこれよりも面倒です。 –

+0

@TimSchmelter:それはwinformsで動作しますか? – XORcist

+0

これを行う通常の方法は、コントロールを 'Panel'に置くことです。' panel.Enabled = false'を設定すると、コントロールとのユーザーのやり取りが無効になります。コントロールは淡色で表示されますが、これは尋ねたものではありませんが、おそらくほとんどのユーザーが期待するものです。 – Justin

答えて

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

関連する問題