2016-04-25 11 views
1

メインフォームがあります。メインフォームのボタンをクリックすると、メインフォームの中央にポップアップとして子フォームを表示する必要があります。この段階では、子フォームの空きスペース(添付画像の内側のボックスの周り)はすべて透明になっている必要があります(グレー表示)ので、メインフォームのコントロールが表示されます。C#winformsポップアップで背景が薄くなった

これを行うには?子フォームで不透明度を使用しようとしましたが、フォーム内のすべてのコントロールに不透明度が適用されています。

enter image description here

Make a form's background transparent:このリンクで提供ソリューションは、ちょうど完全に透明になります。私は不透明効果が欲しい。

ChildForm frm = new ChildForm(); 
frm.ShowDialog();//use this so that the main form depends on the child form 
frm.Show(); // use this to show an independent child form 

と子で

は、あなたがそれを作るためにChildFormのOpacityプロパティを使用することができますフォーム:あなたのメインボタンのプレスイベントで、フォームまたは何のために

+0

は、メインフォームの子フォームに依存しないのですか?または他のコントロールを使用できますか?パネルなど – BugFinder

+0

私はWinFormsアプリケーションをやっていないので、長い時間がかかりました。プロパティウィンドウに不透明プロパティなどがありませんか?ちょうど私の頭の上から推測する。無関係かもしれない。 –

+0

@BugFinder子フォームはメインフォームから独立しています。メインフォームのパネルとして使うことはできません。 – Rocky

答えて

1

をここに私はこの問題を解決してきた方法ですEは、このようにOnPaintBackground方法だ:私は基本的にラベルと2つのボタン(OK、キャンセル)を持つパネルのユーザーコントロールをホストしています。このフォーム内

protected override void OnPaintBackground(PaintEventArgs e) 
    { 
     using (SolidBrush brush = new SolidBrush(Color.FromArgb(70, 0, 0, 0))) 
     { 
      e.Graphics.FillRectangle(brush, e.ClipRectangle); 
     } 
    } 

。ユーザーがボタンをクリックすると、このフォームのDialogResultOKまたはCancelに設定します(クリックしたボタンによって異なります)。

このフォームは、メインフォームからダイアログ(frm.ShowDialog(this))として表示されます。 また、コンストラクタをメインフォームに取り込み、メインフォームを完全に覆うように独自の表示矩形を設定し、ユーザーコントロールをフォームの高さと幅の半分の3分の1にサイズ変更して中央に配置します。ここ

public FrmThickBox(Form owner, string message) 
{ 
    this.Owner = owner; 
    this.Width = owner.Width; 
    this.Height = owner.Height; 
    this.Top = owner.Top; 
    this.Left = owner.Left; 
    this.thickBoxControl.Text = message; 
    this.thickBoxControl.Size = new Size((int)this.Width/2, (int)this.Height/3); 
    this.thickBoxControl.Top = (int)((this.Height - thickBoxControl.Height)/2); 
    this.thickBoxControl.Left = (int)((this.Width - thickBoxControl.Width)/2); 
} 

そしてそれがどのように見えるかである(もちろん、丸みを帯びた角は全体の別の話です):

enter image description here

+0

これは私が探しているものです。ありがとう!私の次の要件は丸みを帯びたコーナーを作ることです:-)それも同様にスニペットを共有することは可能ですか? – Rocky

+0

新しいトピック - 新しい質問。私もそれに答えるのが大好きです。 –

+0

新しい質問http:// stackoverflowを作成しました。com/questions/36855559/c-sharp-child-form-over-main-form-having-greyed-out-effect – Rocky

0

は、子供が次のコードを使用することができます形成するトリガー透明、あなたもフォームデザイナからこれを変更することができます。

私は、フォームを作成し、そしてoverridました:

this.Opacity = 50; //or any other value that you like 
+0

フォームに不透明度を設定しようとしました。不透明度は、フォームのすべてのコントロールに適用されています。つまり、子フォームのパネルのベタ背景が欲しいが、不透明度のため、パネルも透明な背景を持っている。 – Rocky

関連する問題