【问题标题】:Change the Textbox1.text to Textbox2.text将 Textbox1.text 更改为 Textbox2.text
【发布时间】:2017-07-23 21:17:24
【问题描述】:

假设我有多个TextBoxs,我想像这样连接数字。然后,我想在上面添加一些文字。这有可能以某种方式做到吗? 这是我目前所拥有的:

for (int i = 0; i<5; i++)
{
    string str = "Textbox" + i.ToString();
    str.Text = "testing";
}

我不知道该怎么做。请有人指出我正确的方向吗?

【问题讨论】:

标签: c# visual-studio


【解决方案1】:

嗯,这是您可以使用的另一种方法,您必须跟踪表单中的所有文本框并将它们添加到全局列表中。

Dictionary<string,TextBox> texts = new Dictionary<string,TextBox>();

在您的 FormLoad 上执行此操作

foreach (Control c in this.Controls)
    if (c.GetType() == typeof(TextBox))
       texts.Add(c.Name,(TextBox)c);

只要你想得到任何文本框,就这样做

 TextBox targetBox;
 texts.TryGetValue("textBox1", out targetBox);

你的 for 循环看起来像

for (int i = 0; i<5; i++)
{
    string str = "Textbox" + i.ToString();
    TextBox targetBox;
    texts.TryGetValue(str, out targetBox);
    targetBox.Text = "testing";
}

这种方法的一个优点是您的整个文本框(与此相关的任何控件)集合都在字典中,因此即使文本框不遵循通用命名方案,您也可以查找它。

【讨论】:

    【解决方案2】:

    也许尝试使用Interpolated Strings

    内插字符串看起来像包含内插表达式的模板字符串。内插字符串返回一个字符串,该字符串将其包含的内插表达式替换为其字符串表示形式。

    示例:

    for (int i = 0; i<5; i++)
    {
        str = $"Textbox{i}";
        str.Text = "testing";
    }
    

    【讨论】:

    • 确保您使用的是 C# 6.0 或更高版本,因为它是在该版本中引入的。
    • 这无济于事。 str 仍然只是一个字符串。 OP想要一个TextBox
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多