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

C# - WriteLine(String.Format()) method repeats first string and ignores others

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

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

        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() 方法的新手,非常感谢任何帮助!

马克

你需要用到{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");

{}中的第一个数字是占位符指定元素在String.Format中的位置,你只指定0哪个表示每次都选择txtPatName.Text

你需要的是将数字从 0 递增到 4。

您也可以直接使用 Console.WriteLine 中的占位符。

参见:Composite Formatting