私はちょっと見回しましたが、C#WinForms 3.5でControl.Enabledを効果的に "オーバーライド"する方法について、私は答えを思いつくことができません。効果的に "Override" Control.Enabled
ここでは、ステータスバーを下部に、ツールバーを上部に追加して使用する基本フォームまたはマスターフォームがあります。このフォームは他のすべてのフォームに継承され、センターパネルにコントロールが追加されます。
マスターベースフォームから継承したフォームの中には、フォームで「有効」プロパティを使用できるようにする必要がありますが、機能パネルを無効にして中央パネルのみを無効にすることができます。ステータス/メニューバーではないので、まだフォームを移動することができます。
私はマスターフォーム(FrmBaseStatus)上で次の操作を実行しようとしている:
private bool enabled = true;
public new bool Enabled
{
return this.enabled;
}
set
{
this.enabled = value;
this.panelBase.Enabled = value;
}
は、しかし、明らかに、これは本当の上書きではなく、我々は我々の継承の一つにベースパネル上のユーザーコントロールを持っている場合これを行うには、他の方法があります
((FrmBaseStatus)this.ParentForm).Enabled = true;
か、我々は常に到達するために、当社の基本フォームにキャストして立ち往生している:フォームは、我々は我々のような何かをする必要があり、このユーザーコントロールからフォームを上書きしたいです使用する有効なプロパティ。
注:OnEnabledイベントをオーバーライドし、OnEnabledベースを呼び出さないか、これを行うか、Control.OnEnabled()のこのイベントで有効化と無効化を行いますか?
コードになりをほとんど意味がありません。フォームを無効にすると、その子コントロールもすべて無効になります。パネルを含む。子供のコントロールは、両親を無効にするビジネスではありません。イベントを使用する。 –
.EnabledChangedでコントロールを再び有効にしましたか? –
問題は「フォーム」自体を無効にすることができないため、それを回避することはできません。 – copystart