2017-07-04 12 views
0

disableFormの全文を入力しますが、テキストボックス、ボタンなどのようにこのForm要素はそれぞれenabledのようにしてください。フォームを無効にしますが、各要素を有効にしたままにしておきます。

だから、私は、これらの要素のユーザーの相互作用を遮断するが、それは、標準的な外観、グレーアウトいない保持したいなど

それはちょうど、手動用EnabledChangedイベントを処理する必要が自動的な方法または1つの種類で行うことができます影響を受ける各コントロール?

+1

透明イメージでフォームをオーバーレイすることができます – NtFreX

+0

"readOnly"モードとして要素を設定できます。 – Komal

+0

@Komal only textbox – NtFreX

答えて

1

すべてのコントロールでは、「バックカラー」プロパティはデフォルトでウィンドウに設定されています。それらをすべて選択し、同じ外観にするには白(または希望の色)に設定します。 テキストと境界線の色を同じにしたい場合があります。それはあなたが望むカスタマイズのレベルに関するものです。

色を完全に制御するには、色を再描画する必要があります。

protected override void OnPaint (System.Windows.Forms.PaintEventArgs e) 
{ 
    if (Enabled) 
    { 
     //use normal realization 
     base.OnPaint (e); 
     return; 
    } 
    //custom drawing 
    using (Brush aBrush = new SolidBrush("YourCustomDisableColor")) 
    { 
     e.Graphics.DrawString(Text, Font, aBrush, ClientRectangle); 
    } 
} 
+0

フォームデザイナは、ボタンの 'ForegroundColor'を' White'に、 'BackgroundColor'を' SteelBlue'に手動で設定し、フォームが無効になっても 'ForegroundColor 'ボタンを押します。 'DataGridView'ヘッダでも同じです。 – pitersmx

+0

ok。はい、その場合、必要な色のテキストを再描画する必要があります。それがパフォーマンスと複雑さに基づいて受け入れられるかどうかを分析する必要があります。私は答えに同じコードを追加しています。 – Harsh

+0

@お返事ありがとうございます、残念ながら、そのフォームの各コントロールのペイントメソッドをオーバーライドする必要があります。 – pitersmx

0

最も簡単な解決策は、すべてのコントロールの上に透明のイメージを持っているだろうし、あなたがコントロールを無効にしたいとき、あなたはそれを示しています。

この画像はすべてのマウス入力を捕捉しますが、キーボードでもコントロールを選択できる可能性があります。

+0

この画像は例えば 'pictureBox'に置かれますか?フォームが 'disabled'になったら、この' pictureBox'を一番上に表示しますか? – pitersmx

+0

。私はすべてのマウス入力をキャッチします。キーボードを使用してバックグラウンドでコントロールを選択することができます。 – NtFreX

関連する問題