【问题标题】:C# fetch textbox with variable in nameC# 获取名称为变量的文本框
【发布时间】:2020-07-30 13:26:32
【问题描述】:

我的代码中有 8 个可见的文本框 = false。 现在我想在按钮单击事件后将它们设置为可见。

文本框名称是:

待定1 tb2 tb3 ...

我想用 tb+i (i=1) 获取文本框并使它们可见。 在第一个文本框可见后,有一个 i++,所以每次点击只会多显示一个文本框。

我已经试过了,但是没用:

 TextBox textbox = (TextBox)Controls.Find(string.Format("tb"+i), false).FirstOrDefault();

        textbox.Visible = true; */
        i++;

谢谢。

【问题讨论】:

  • 这是 WinForms 吗?
  • 将它们添加到列表中并按索引获取它们
  • 是的,在 WinForms 中。如何将它们添加到列表中?文本框在窗口窗体上,不可见。
  • 简单地做:yourList.Add(someTextbox);请注意,不保证 Name 属性是唯一的,甚至不保证是设置的。通常使用 Dictionary 通过名称访问它们。

标签: c# textbox controls fetch visual-studio-2019


【解决方案1】:

你好,你可以试试下面的

//I added the if loop so that you can not go higher then what you have said
            if (i < 9)
            {
                TextBox tb = (TextBox)this.Controls["tb" + i];
                tb.Visible = true;
            }

【讨论】:

  • 检查你对 i 的值,你必须从 1 开始。当你从 0 开始时,它会寻找“tb0”,这可能不在你的表单中
  • 这意味着你的文本框没有被称为“tb1”确保一切都是一样的,否则它不会工作
  • 它不起作用。如果我输入: TextBox tb = (TextBox)this.Controls["tb2"];总是意味着它的“空”
  • 我在代码之间有MessageBoxes,名称相同。
  • 你能不能输入“tb2.visible = false;”
【解决方案2】:

现在我有了解决方案:

 if (i < 9) { var textbox = Controls.Find("tb" + i, true).FirstOrDefault(); if (textbox != null) { textbox.Visible = true; } i++; } 

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多