0

テキストと無制限の数のテキストボックスのさまざまなプロパティを確認する必要があります。私は{i}を使用して以下の方法でそれを行うことができるかもしれませんが(したがって、tbEavelength1、tbEavelength2、tbEavelength3などをチェックします)、これは機能しません誰かが何かアイデアを持っているかどうか疑問に思っていましたか?

for (int i = 1; i <= comboBox1.SelectedIndex + 1; i++)
{
    if (tbEaveLength{i}.IsEnabled == false)
    {
        eaveLength{i} = 0;
    }
    else if (tbEaveLength{i}.Text == "")
    {
        throw new Exception("EaveLength {i} must have a value");
    }
    else if (!double.TryParse(tbEaveLength{i}.Text, out eaveLength{i}))
    {
       throw new Exception("EaveLength {i} must be numerical");
    }
}

助けてくれてありがとう!

4

3 に答える 3

1

を作成してList<TextBox>から、インデックスを使用してテキストボックスを取得し、長さを使用して同じことを行うのはList<double>どうですか?

//List<TextBox> listTextBoxes = new List<TextBox>();
//populate the list of textboxes

//List<double> listEaveLength = new List<double>();

for (int i = 1; i <= comboBox1.SelectedIndex + 1; i++)
{
    if (listTextBoxes[i].IsEnabled == false)
    {
        listEaveLength[i] = 0;
    }
    else if (listTextBoxes[i].Text == "")
    {
        throw new Exception(listTextBoxes[i].Name +  " must have a value");
    }
    else if (!double.TryParse(listTextBoxes[i].Text, out listEaveLength[i]))
    {
        throw new Exception(listTextBoxes[i].Name + " must be numerical");
    }
}

前述のように、ミリムースは並列アレイを管理するのは難しいかもしれませんが、より良い解決策ではありません。したがって、次のようなクラスを作成できます。

class DataStructure
{
   public TextBox Textbox
   {
      get;
      set;
   }

   public double Lenght
   {
      get;
      set;    
   }

   public DataStructure(TextBox Textbox)
   {
      this.Textbox = Textbox;
   }
}

次に、常に:を使用しList<DataStructure>ます

//List<DataStructure> myList = new LList<DataStructure>();
//myList.Add(new DataStructure(myTextBox));
//... populate your list

for (int i = 1; i <= comboBox1.SelectedIndex + 1; i++)
{
    if (myList[i].Textbox.IsEnabled == false)
    {
        myList[i].Lenght = 0;
    }
    else if (myList[i].Textbox.Text == "")
    {
        throw new Exception(myList[i].Textbox.Name +  " must have a value");
    }
    else if (!double.TryParse(myList[i].Textbox.Text, out myList[i].Lenght))
    {
        throw new Exception(myList[i].Textbox.Name + " must be numerical");
    }
}
于 2012-07-21T12:54:56.727 に答える
0

こんにちは、FindControl()メソッドを使用してテキストボックスを検索してみてください。Asp.netページで作業していると思います。

例えば。

for (int i = 1; i <= comboBox1.SelectedIndex + 1; i++)
{
    var tbEaveLength = FindControl("tbEaveLength" + i);
    if (tbEaveLength.IsEnabled == false)
    {
        eaveLength = 0;
    }
    else if (tbEaveLength.Text == "")
    {
        throw new Exception("EaveLength {i} must have a value");
    }
    else if (!double.TryParse(tbEaveLength{i}.Text, out eaveLength{i}))
    {
        throw new Exception("EaveLength {i} must be numerical");
    }
 }
于 2012-07-21T11:58:15.563 に答える
0

コードビハインドファイルにいる場合は、メソッドFindNameを使用して名前を渡すことでテキストボックスのインスタンスを取得し、その特定のテキストボックスに対して次のような操作を実行できます-

for (int i = 1; i <= comboBox1.SelectedIndex + 1; i++)
{
    TextBox textBox = (TextBox)FindName("tbEaveLength" + i);
    if (textBox.IsEnabled == false)
    {
        eaveLength{i} = 0;
    }
    else if (textBox.Text == "")
    {
        throw new Exception("EaveLength {i} must have a value");
    }
    else if (!double.TryParse(textBox.Text, out eaveLength{i}))
    {
       throw new Exception("EaveLength {i} must be numerical");
    }
}
于 2012-07-21T20:40:58.930 に答える