2017-12-05 17 views
1

クラシックを暗い背景のモーダルウィンドウにしたいと思います。灰色の背景のポップアップモーダルダイアログ

なぜこれを作るのは難しいのかわかりません。私はそれをするために多くの方法を試みたが、それはちょうど私のニーズに合っていません。

私は10+モーダルウィンドウを持っており、彼らは彼らが「OK、ノー、キャンセル」のスタッフではありません、彼らはグリッドを持っているフォーム、チャートなど

をカスタマイズされています。

私は以下のコードを適用しようとしました。コードは基本的に、親フォームとモーダルフォームの間に黒い背景を持つ別のフォームを作成します。

  Form f = new Form(); 
      f.BackColor = Color.Black; 
      f.Size = this.Size; 
      f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
      f.StartPosition = this.StartPosition; 
      f.Opacity = 0.6; 
      f.Show(); 
      notificationSGA nsga = new notificationSGA(Cursor.Position); 
      nsga.ShowDialog(); 
      f.Dispose(); 
      f.Close(); 

上記のコードは完全に正常に動作します。しかし、画面の中心ではなく親(マスタ)フォームをどこかに移動すると、スクリーンの中心ではなく黒いフォームが画面の中央に表示されます。

どうすれば問題を解決できますか?

注:これは以下の質問と重複するトピックではありません。 .ManualHow to show a pop up message with dark background

答えて

2

変更.StartPositionあなたの参照形式がどこに.Locationを設定できるようにします。
また、両方の新しいフォームの.Show()メソッドの所有者を変更してください。

Form f = new Form(); 
    //(...) 
    f.Size = this.Size; 
    f.StartPosition = FormStartPosition.Manual; 
    f.Location = this.Location; 
    //(...) 
    f.Show(this); 

    notificationSGA nsga = new notificationSGA(Cursor.Position); 
    nsga.StartPosition = FormStartPosition.CenterParent; 
    nsga.ShowDialog(f); 

    f.Dispose(); 
+0

あなた、あなたは完璧です。 –

関連する問題