2012-04-07 13 views
0

私はフォームをformMainと呼んでいます。このフォームには、formColorsという別のフォームを開くメニューがあります。 formColorsが開くと、ラジオボタン、つまり色が赤色のラベルが付けられていますフォームフォントの色を別のフォームから変更する

formColorsでformMainのフォント色をどのように変更できますか?

答えて

2

formColorsEventを作成し、formMainやハンスアンパッサンとしてそれを購読するには、あなたが、これはそれを行うのに適した方法ですパブリックプロパティとフォームDialogResult Propertyを使用することができます指摘しました。

WinフォームDialogResult例

をForm1

public partial class Form1 : Form 
{ 
    Form2 frm2; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     frm2 = new Form2(); 
     if (frm2.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      this.BackColor = frm2.formColor; 

     frm2.Close(); 
    } 
} 

フォーム2

public partial class Form2 : Form 
{ 
    Color newColor; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 
    public Color formColor 
    { 
     get { return this.newColor; } 
     set { this.newColor = value; } 
    } 

    private void btnRed_Click(object sender, EventArgs e) 
    { 
     newColor = Color.Red; 
    } 

    private void btnBlue_Click(object sender, EventArgs e) 
    { 
     newColor = Color.Blue; 
    } 

    private void btnOk_Click(object sender, EventArgs e) 
    { 
     DialogResult = System.Windows.Forms.DialogResult.OK; 
    } 

} 

Winフォームイベント例:

をForm1:

public partial class Form1 : Form 
{ 
    Form2 frm2 = new Form2(); 
    public Form1() 
    { 
     InitializeComponent(); 
     frm2.ColorEvent += new ColorEventHandler(frm2_ColorEvent); 

    } 

    void frm2_ColorEvent(object sender, ColorEventArgs e) 
    { 
     this.BackColor = e.formColor; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     frm2.ShowDialog(); 
    } 
} 

のForm2:

public delegate void ColorEventHandler(object sender, ColorEventArgs e); 
public partial class Form2 : Form 
{ 
    public event ColorEventHandler ColorEvent; 

    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ColorEventArgs newColor = new ColorEventArgs(); 
     newColor.formColor=Color.Red; 
     ColorEvent(this, newColor); 
    } 


} 

ColorEventClass

public class ColorEventArgs : EventArgs 
{ 
    private Color newColor; 
    public Color formColor 
    { 
     get { return this.newColor; } 

     set { this.newColor = value; } 
    } 
} 
+0

これは正しくないユーザーがキャンセルしたときに、ダイアログは何の効果もありません必要がありますそれ。 –

+0

@ HansPassantダイアログは、キャンセルされたときに親フォームに影響を与えません。ボタンをクリックして新しいイベントを発生させた場合に限ります。 –

+0

したがって、ユーザーがボタンをクリックすると、変更されたダイアログがキャンセルされます。これはイベントではなく、単に公共の財産であるべきです。 ShowDialog()がDialogResult.Okを返した場合は、そのプロパティを使用します。 –

関連する問題