c# - 如何整齐地对齐文本框中的文本并在导出到 .txt 时保留它

标签 c# winforms textbox

我有一个愚蠢的小问题,我希望你们能参与进来,分享你们的经验。

我需要一个包含以下(动态)数据的文本框:

TEXT    
TEXT
TEXT
TEXT

_______________________
Name:          Amount:
Blah                  3
Blahblah             10
_______________________

但框内的文本是问题所在。 到目前为止,我正在使用名为 SBStringBuilder 制作所有这些文本,最后我设置了 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 amountstring.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/

相关文章:

c# - 引入 Visual Studio 2015 的问题

C# 深入探讨 : Type Constraint

c# - 鼠标位置如何转换为滚动控件?

c# - TextBox 控件内的图像 C#

c# - 通过使用箭头键导航 DataGridView 来更新文本框

c# - 如何避免从基类构造函数调用虚方法

c# - 如何逐行读取 StreamReader 文本

c# - 在运行时 PictureBox 控件 c# 中找不到图像属性

c# - 加载 .html,带有 css 引用,文件嵌入在资源中

javascript - 使用 JavaScript 获取附加了 HTMLEditorExtender 的 ASP TextBox 元素的值