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

オブジェクトへの参照を動的に取得できますか?

環境/言語:[C# NET Framework3.5]
分類:[.NET]

VisualC#のプログラミングで以下ご存知の方が
いればお願いします。

画面にコンボボックスが10個あり、それに付随するテキストボックスも10個あります。

これを全て、ファイルに書き出したと思っています。
その時に、以下のようにただ羅列すれば可能ではありますが、数が増えれば
増えるほど、羅列が長くなります。
たとえば、ループで回してオブジェクトへの参照を動的するといった方法
は無いのでしょうか?

textFile.WriteLine(cmbNmae1.Text,txtName1.Text)
textFile.WriteLine(cmbNmae2.Text,txtName2.Text)
textFile.WriteLine(cmbNmae3.Text,txtName3.Text)

それ以外の方法で、お勧めの方法がありましたら、
よろしくお願いします。

以上
あまりエレガントではありませんが^^;

using句に
using System.Collections.Generic;
を追加

ロードイベント、ボタンクリックイベント、出力メソッドなりであらかじめ以下を定義します。ボタン名はbtnOutPutと過程します。

List<Control> lstTxt = new List<Control>();
List<Control> lstCbx = new List<Control>();

foreach(Control ctrl in btnOutPut.Parent.Controls)
{
if(ctrl is TextBox)
{
lstTxt.Add((TextBox)ctrl);
}
else if(ctrl is ComboBox)
{
lstCbx.Add((ComboBox)ctrl);
}
}

//テキストボックスとコンボボックスの個数は同じと過程しています
for(int i = 0 ; i < lstTxt.Count ; i ++)
{
string cmbName = ((ComboBox)lstCbx[i]).SelectedValue.ToString();
string txtName = ((TextBox)lstTxt[i]).Text;

textFile.WriteLine(cmbName , txtName);
}

動かなかった場合はすみません…
すみません、図表モードにし忘れました。

あまりエレガントではありませんが^^;
 
using句に
using System.Collections.Generic;
を追加
> 
ロードイベント、ボタンクリックイベント、出力メソッドなりであらかじめ以下を定義します。ボタン名はbtnOutPutと過程します。

List<Control> lstTxt = new List<Control>();
List<Control> lstCbx = new List<Control>();
 
foreach(Control ctrl in btnOutPut.Parent.Controls)
{
    if(ctrl is TextBox)
    {
       lstTxt.Add((TextBox)ctrl);
    }
    else if(ctrl is ComboBox)
    {
       lstCbx.Add((ComboBox)ctrl);
    }
}
 
 //テキストボックスとコンボボックスの個数は同じと過程しています
for(int i = 0 ; i < lstTxt.Count ; i ++)
{
  string cmbName = ((ComboBox)lstCbx[i]).SelectedValue.ToString();
  string txtName = ((TextBox)lstTxt[i]).Text;

  textFile.WriteLine(cmbName , txtName);
}
 
動かなかった場合はすみません…
ありがとうございます。
教えて下さった方法でもうまくいきそうですね。
あとControlsクラスから取得方法でもうまくいきました。
ありがとうございます!
解決済み!

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