【问题标题】:Append int to end of string or textbox name in a For Loop C#在 For 循环 C# 中将 int 附加到字符串或文本框名称的末尾
【发布时间】:2012-08-06 19:21:01
【问题描述】:

我有一个 C# 应用程序,其中有几个具有相同名称的文本框,除了末尾的数字从 1 开始到 19。我希望使用 for 循环向这些文本框动态添加值通过使用数组列表。在某些情况下,arrayList 中将没有 19 个项目,因此某些文本框将未填充。这是我正在尝试做的示例代码。这可能吗?

  for (int count = 0; count < dogList.Count; count++)
        {
            regUKCNumTextBox[count+1].Text=(dogList[count].Attributes["id"].Value.ToString());
        }

【问题讨论】:

  • 你试过你的示例代码吗?如果它不起作用,您看到了什么错误,或者什么意外结果?

标签: c# string for-loop


【解决方案1】:

所以您有一组要从上到下填写的文本框?那么是的,TextBox 的集合似乎很合适。

如果您将TextBox 引用放在数组或List&lt;TextBox&gt; 中——我不会使用ArrayList,因为它被认为已弃用List&lt;T&gt;——那么是的,你可以这样做:

TextBox[] regUKCNumTextBox = new [] 
    {
         yourTextBoxA,
         yourTextBoxB,
         ...
    };

那么是的,你的逻辑是可能的,你也可以通过它的名字来查询控件,虽然这在运行时会更重 - 所以这是一个权衡。是的,在这个解决方案中,您必须设置一个集合来保存您的文本框引用,但它会更高效。

【讨论】:

  • 当我尝试执行此操作时出现错误。我试图这样做: TextBox[] regUKCNumTextBox = new [] { regUKCNumTextBox1; regUKCNumTextBox2; regUKCNumTextBox3; regUKCNumTextBox4; regUKCNumTextBox5; regUKCNumTextBox6; regUKCNumTextBox7; regUKCNumTextBox8; regUKCNumTextBox9; }
【解决方案2】:

试试这个:

(顺便说一下,我假设您使用 WinForms)

for (int count = 0; count < dogList.Count; count++)
{
   object foundTextBox = this.Controls.Find("nameofTextBoxes" + [count+1]);

   if (foundTextBox != null)
   {
      if (foundTextBox is TextBox)
      {
         ((TextBox)foundTextBox).Text=(dogList[count].Attributes["id"].Value.ToString());
      }
   }

}

使用此代码,您正试图从您的 Forms Controls 集合中找到一个 Control。然后你必须确保控件是TextBox 类型。几时;将其转换为 TextBox 并用它做你想做的事。在这种情况下;为 Text 属性赋值。

像 James Michael Hare 提供的解决方案一样,保留 TextBoxes 的集合会更有效

【讨论】:

  • 除了文本框中的值为 System.Xml.XmlElement 外,它可以工作
  • 尝试.InnerText 而不是.Value.ToString()
  • 仍然产生相同的结果。这很奇怪,因为如果我有完全相同的代码,只是直接使用它的名称将它分配给文本框,它就可以正常工作。
【解决方案3】:

哎呀;那里的整体设计似乎不太对劲;但回顾过去,这里是一些可能有效的伪代码的快速测试:

for (int count = 0; count < dogList.Count; count++)
{
    var stringName = string.Format("myTextBoxName{0}", count);
    var ctrl = FindControl(stringName);
    if(ctrl == null) continue;
    ctrl.Text = dogList[count];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2022-12-11
    • 1970-01-01
    • 2020-08-19
    • 2014-03-06
    • 1970-01-01
    • 2017-09-29
    • 2020-09-09
    相关资源
    最近更新 更多