DOBON.NET DOBON.NETプログラミング掲示板過去ログ

文字列からコントローラーを認識させることは可能でしょうか?

環境/言語:[C# .Net 3.5]
分類:[.NET]

文字列からコントローラーを認識させることは可能でしょうか?

this.testBtn = new System.Windows.Forms.RadioButton();

文字列 "testBtn" を RadioButtonのtestBtnを認識させたいのですが

parseメソッドのようなものがあるのでしょうか?

よろしくお願いします。

テスト環境
C# .Net 3.5
■No26874に返信(かとうさんの記事)
> コントローラーを認識させることは可能でしょうか?
 コントロール?


> this.testBtn = new System.Windows.Forms.RadioButton();
> 文字列 "testBtn" を RadioButtonのtestBtnを認識させたいのですが

≪testBtn の Name が設定されている場合≫
案1) 『(RadioButton)this.Controls["testBtn"]』で取得する。
案2) this.Controls.Find("testBtn", true) で検索する。

≪testBtn の Name が設定されていない場合≫
案3) this.Controls.OfType<RadioButton>() 等で Radiobutton を列挙して探す。
 (Panel 等を使っている場合は子階層の捜索も必要)
案4) System.Reflection で取得する。
var bf = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
object radioButton = this.GetType().GetField("testBtn", bf).GetValue(this);

≪その他≫
案5) 後で検索しやすいよう、Dictionary 等で管理しておく。

Dictionary<string, RadioButton> dict;
private void Form1_Load(object sender, EventArgs e)
{
 dict = new Dictionary<string, RadioButton>();
 dict.Add("testBtn", this.testBtn);
}
private void button1_Click(object sender, EventArgs e)
{
 this.dict["testBtn"].Checked = true;
}
魔界の仮面弁士さん

質問に回答していただきありがとうございます。
案1) 『(RadioButton)this.Controls["testBtn"]』で自分のやりたいことが
実現できました。調べても見つからなくあきらめていたのでとても助かりました
ありがとうございます!
案を5つも例示してもらいとてもすごいです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板