RadioButton btn = (RadioButton)sender;イベント用メソッドの引数として渡されるsenderは、objectというクラスのインスタンスで、これがイベントの発生したオブジェクトになります。「なぜ、RadioButtonインスタンスじゃないのか?」というと、イベントというのは特定のコントロールでのみ発生するわけではないからです。どんなコントロールにそのイベント用メソッドが割り当てられているかわかりません。そこで、イベントが発生したインスタンスを、スーパークラスであるobjectに変換して渡すようにしているのです。
label.Text = "selected: " + btn.Text;
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MyFrmApp
{
public class MyForm : Form
{
private Label label;
RadioButton radio1, radio2;
public MyForm()
{
this.Width = 300;
this.Height = 200;
setupControls();
}
public void setupControls()
{
label = new Label();
label.Text = "type text:";
label.Font = new Font("Geneva",12,FontStyle.Regular);
label.Height = 30;
label.Width = 300;
this.Controls.Add(label);
GroupBox group = new GroupBox();
group.Width = 200;
group.Height = 100;
group.Top = 50;
group.Left = 50;
group.Text = "radio group";
this.Controls.Add(group);
radio1 = new RadioButton();
radio1.Text = "male";
radio1.Top = 25;
radio1.Left = 25;
radio1.Checked = true;
radio1.CheckedChanged += check_changed;
group.Controls.Add(radio1);
radio2 = new RadioButton();
radio2.Text = "fimale";
radio2.Top = 50;
radio2.Left = 25;
radio2.CheckedChanged += check_changed;
group.Controls.Add(radio2);
}
private void check_changed(object sender, System.EventArgs e)
{
RadioButton btn = (RadioButton)sender;
label.Text = "selected: " + btn.Text;
}
}
}
| << 前へ | 次へ >> |