0

formColors という別のフォームを開くメニューがある formMain と呼ぶフォームがあります。formColors が開くと、Colors ie Red のラベルが付いたラジオ ボタンが表示されます。

formMain のフォントの色を formColors で選択したオプションに変更するにはどうすればよいですか?

4

1 に答える 1

2

Eventinを作成しformColorsてサブスクライブするformMainか、Hans Passant が指摘したように、パブリック プロパティと Forms DialogResult プロパティを使用できます。これが推奨される方法です。

WinForm DialogResult の例

フォーム1

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;
    } 

}

WinForm イベントの例:

フォーム1:

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();
    }
}

フォーム2:

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; }
    }
}
于 2012-04-07T05:19:23.727 に答える