C# - WriteLine(String.Format())方法重复第一个字符串并忽略其他字符串

时间:2015-06-24 16:05:09

标签: c# writetofile

我创建了一个C#windows窗体应用程序,它通过文本框获取输入,并在相关按钮单击时将它们写入文本文件。 我发现在生成的文本文件中保持清晰的布局在开发过程中一直是一个挑战,并且尽可能尝试从文本框中保存数据以及控制台上文本框旁边的标签。 我决定尝试将信息列表并读取String.Format()方法,该方法在字符串{0,-10}中提供空间,然后让您列出应该占据该位置的变量或textbox.Text。

这在理论上是有效的,但我发现当我尝试它时,该方法似乎只接受第一个输入并在所有可用空间中重复...

        consoleFile.WriteLine("--------------------------------------------------------");
        consoleFile.WriteLine("Patient Name | Owner Name | Surgeon | Anaethetist | Date");
        consoleFile.WriteLine(String.Format("{0, -20} | {0, -20} | {0, -20} | {0, -20} | {0, -20}",
                              txtPatName.Text, txtOwnerName.Text, txtSurgName.Text, txtAnthtstName.Text, txtDate.Text));
        consoleFile.WriteLine("--------------------------------------------------------");
        consoleFile.WriteLine("\n\n");

在这个例子中,我认为{0,-20}的每个插槽都会从代码下一行列表中的相关文本框中获取一个值。但是,每个插槽都打印出来自< txtPatName.Text'的第一个参数的文本,这意味着相同的字符串被写入五次。 那么,我如何让方法识别其他输入?

如果我犯了一个明显的错误,请耐心等待,因为我是今天的String.Format()方法的新手,非常感谢任何帮助!

标记

2 个答案:

答案 0 :(得分:1)

您需要使用{1, -20}等。它是传递给String.Format的参数索引:

    consoleFile.WriteLine("--------------------------------------------------------");
    consoleFile.WriteLine("Patient Name | Owner Name | Surgeon | Anaethetist | Date");
    consoleFile.WriteLine(String.Format("{0, -20} | {1, -20} | {2, -20} | {3, -20} | {4, -20}",
                          txtPatName.Text, txtOwnerName.Text, txtSurgName.Text, txtAnthtstName.Text, txtDate.Text));
    consoleFile.WriteLine("--------------------------------------------------------");
    consoleFile.WriteLine("\n\n");

答案 1 :(得分:0)

{}内的第一个数字是占位符,用于指定String.Format中元素的位置,您只需指定0,这意味着选择{{1} }} 每次。

您需要的是将数字从0增加到4.

您也可以直接在txtPatName.Text中使用占位符。

请参阅:Composite Formatting