0

winforms C#複数のダイアログ ボックスを開くアプリケーションがあります。アプリケーションのスタイルに合わせて、各ウィンドウのデフォルトのタイトル バーを削除し、(コントロール ボタンとドラッグして移動する機能を備えた) 独自のタイトル バーを作成しました。

現在私が直面している問題は、タイトルバーがないと、ユーザーは手動で離れたときにどのウィンドウが「アクティブな」ウィンドウであるかを知る方法がないことです (したがって、それらは重なっていません)。

Windows アプリケーション (タイトルバーを使用する) では、ダイアログ ボックスから離れてメイン プログラムに戻ろうとすると (ダイアログ ボックスを閉じずに)、移動できません。ダイアログ ボックスの境界線が点滅し、Windows のエラー音が聞こえます。デフォルトのタイトルバーがなくても、同等の視覚的なフィードバックがあれば素晴らしいでしょう。ウィンドウ全体を暗くすることでうまくいくようです。

ダイアログが開いている間、親ウィンドウにうまく色を付ける擬似コードでのこのようなもの:

// tint window now
window.ShowDialog();
// un-tint window

色を「透明」に設定してすべてをカバーするパネルを配置しようとしましたが (後でパネルの不透明度を制御することを意図して)、透明度が機能していないようです。これを達成するための他のアイデアはありますか?または、同じレベルの視覚的フィードバックを達成するためのより良い提案を誰かが持っていますか?

概要: ウィンドウ全体に色を付けたり、色を重ねたりする方法はありますか? そうでない場合、ウィンドウを「非アクティブ」に見せる別の方法を提案できますか?

4

1 に答える 1

1

無効にしたいフォームでメソッドを作成することをお勧めします。

void DisableForm()
{
    //some fancy color
    this.BackColor = System.Drawing.Color.Khaki;

    //and disable all controls owned by form, just to be sure
    foreach (var s in this.Controls)
    {
        ((Control)s).Enabled = false;
    }
}

もちろん、それらの形式を元に戻すことを可能にする機能。

編集。また、コントロールの可視性プロパティをfalseに設定することもできます

于 2013-03-17T00:55:59.317 に答える