formColors という別のフォームを開くメニューがある formMain と呼ぶフォームがあります。formColors が開くと、Colors ie Red のラベルが付いたラジオ ボタンが表示されます。
formMain のフォントの色を formColors で選択したオプションに変更するにはどうすればよいですか?
Event
inを作成し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; }
}
}