我有一个愚蠢的小问题,我希望你们能参与进来,分享你们的经验。
我需要一个包含以下(动态)数据的文本框:
TEXT
TEXT
TEXT
TEXT
_______________________
Name: Amount:
Blah 3
Blahblah 10
_______________________
但框内的文本是问题所在。
到目前为止,我正在使用名为 SB
的 StringBuilder
制作所有这些文本,最后我设置了 MyTextBox.Text
= SB.ToString ()
;
我像这样在框内设置标题:
SB.AppendLine("Name\t\Amount:");
我在这样的循环中生成数据:
SB.AppendLine(name + "\t\t" + amount);
但它并没有像我的示例那样整齐地对齐! 如果名称比之前的名称长,则金额将出现在该行的完全不同的位置 - 与之前的相比。
外汇。像这样:
TEXT
TEXT
TEXT
TEXT
__________________
Navn Antal:
SpecSaver 1
MadEyes 1
Gucci 1
__________________
我的第一个问题:如何防止这种情况发生?当您需要多行文本框来包含大量数据时,您通常会做什么。 我的第二个问题:当我将它导出到这样的 .txt 文档时:
using(var text = new StreamWriter("textfile.txt", false))
{
text.Write(SB);
}
它给出了另一个版本的数据,完全错位了。它应该与 MyTextBox.Text 相同。
最佳答案
首先,您需要选择 Fixed-Width
文本框的字体。
接下来,您可以提供一个 Padding amount到 string.Format()
(或 StringBuilder.AppendFormat
)
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("{0, -20}{1, -10}", "Title 1", "Title 2"));
sb.AppendLine(string.Format("{0, -20}{1, -10}", "Val Col 1 A", "Val Col 2 A"));
sb.AppendLine(string.Format("{0, -20}{1, -10}", "Val Col 1 B", "Val Col 2 B"));
Console.WriteLine(sb.ToString());
结果:
Title 1 Title 2
Val Col 1 A Val Col 2 A
Val Col 1 B Val Col 2 B
关于c# - 如何整齐地对齐文本框中的文本并在导出到 .txt 时保留它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932267/