C#中的变量ID

时间:2016-11-16 15:59:38

标签: c# windows

编写Windows窗体应用程序时,我发现自己必须根据输入的数量创建可变数量的文本字段。

我决定将这些name1name2name3,...,nameN命名为。

现在我希望能够将用户的输入保存到文本文件中。为此,我需要将文本框中的文本转换为单独的变量,以便将其写入文本文件。

这会导致像这样的for循环:

for(i=0; i < totalnames; i++)
{
    string varname= "name" + i;
}

但是这样我无法从文本框中获取值。如何从文本框中获取单独的值以将其写入文本文件?

谢谢,

3 个答案:

答案 0 :(得分:1)

创建表单控件时,请在列表中保留对它们的引用:

// probably at the class level...
List<TextBox> myTextBoxes = new List<TextBox>();

// then when you create them...
myTextBoxes.Add(name1);
// etc.

然后,当您需要引用它们时,请使用列表:

foreach (var textBox in myTextBoxes)
{
    // get the value from the text box and use it in your output
}

答案 1 :(得分:0)

您可以创建一个字符串List列表并在其中添加您的名字。然后使用StreamWriter在文件中添加名称:

        List<string> myListOfNames = new List<string>();
        int totalnames = 10;
        for (int i = 0; i < totalnames; i++)
        {
            myListOfNames.Add("name" + i);
        }


        using (StreamWriter writer =  new StreamWriter("C:\\MyTextFile.txt", true))
        {
            foreach (string name in myListOfNames)
            {
                writer.WriteLine(name);
            }
        }

答案 2 :(得分:0)

这是我的两个便士价值,因为OP最初说 Windows Form Application - 我会有一个保存 button,当被解雇时,代码后面会抓取所有文本框并保存到文件中。如果需要,您可以自己为文本框添加自己的过滤。

首先,这是按钮事件背后的代码:

    private void saveToFile_Click(object sender, EventArgs e)
    {
        using (StreamWriter writer = new StreamWriter("C:\\k\\saveToFile.txt", true))
        {
            if (this.Controls.Count > 0)
            {
                var textBoxes = this.Controls.OfType<TextBox>();
                foreach (TextBox textbox in textBoxes)
                {
                    writer.WriteLine(textbox.Name + "=" + textbox.Text);
                }
            }


        }
    }

一个简单的forn来证明这一点,每个TextBox的名称都为 name1 等。

enter image description here

此处还有文件的示例输出:

enter image description here

<强>改进

  1. 过滤文本框 - 您可能只想对某些特定名称的文本框执行此操作。
  2. 加载文件。我已将文本框名称添加到文件中,因此理论上您可以将数据加载回文本框中。