1

私は6つの数字を持つ配列を持っています。これらの各数値に対して特定の方程式を実行し、結果を配列内の位置に対応する一連のテキスト ボックスに配置したいと思います。例えば。配列内の pos 0 の値に関する方程式の結果は textbox01 に入り、pos1 の結果は textbox02 に入ります。

次のコードがあります。

for (int i = 0; i <= 5; i++)
        {
            if ((Convert.ToInt32(statArray.GetValue(i))-10)%2 == 0)
            {
                //txtMod01.Text = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 10) / 2);
            }
            else
            {
                txtMod01.Text = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 11) / 2);
            }
        }

テキスト ボックスの名前 (例: txtMod01) を、一連の次のテキスト ボックス (txtMod02) に自動的に変更したいと考えています。

これを行う方法はありますか?

4

2 に答える 2

2

リフレクションを使用すると、実行時に型を操作できます。

// property name "txtMod0x"
string propertyName = "txtMod" + i.ToString().PadLeft(2, '0');

// get the property from the current type
PropertyInfo prop = this.GetType().GetProperty(propertyName);

if (prop != null)
{
    // get the property value (the TextBox in this case)
    var textBox = (TextBox)prop.GetValue(this, null);

    string val = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 11) / 2);
    textBox.Text = val;
}
于 2013-10-08T22:45:17.360 に答える
1

次のように、Textbox を配列に入れることもできます。

    TextBox[] boxes = new TextBox[]{txtbox01, txtbox02, txtbox03, txtbox04, txtbox05, txtbox06};
    int[] values = new int[]{val1, val2,val3, val4,val5, val6};
    for(int i=0; i < values.Count; ++i)
    {
        //perform calculations

        ...

        boxes[i].Text = values[i];
    }
于 2013-10-09T01:23:41.097 に答える