0

我有一个制表符分隔的文件,所以我正在读入一个数组:

string[] yourChoicesItems = File.ReadAllLines("test.txt"); 
aaaaaaaaa(tab)0.09
aaa(tab)1.25

问题是,当我在文本框中显示数组时,它最终看起来像这样:

aaaaaaaaa    0.09
aaa    0.09

我希望第二列排队。在 Word 中,我只是更改制表位,但是当我用 Google 搜索“制表位”+ C# 时,我得到了完全不同的东西。

4

4 回答 4

4

从根本上说,据我所知,文本框并不是真正设计用于处理格式化文本。当然有RichTextBox——但我不确定这是否会按照您希望它默认的方式处理选项卡。

使用纯文本框,您可以将字体设置为固定宽度,然后将每个选项卡替换为不同数量的空格,具体取决于它在行中的距离......但是从根本上显示表格有很多麻烦控件中的数据确实不是为此目的而设计的。

相反,您应该考虑沿网格视图的线进行的一些事情 - 用制表符分割线,每条线都变成一行数据。我怀疑,对于手头的任务来说,这是一个更合适的控制。

于 2013-03-20T19:51:40.100 回答
1

要将它们排列在您的文本框中,请拆分您的输入,然后使用 String.Format 将其加入:

string[] parts= record.Split('\t');
string yourOutput = string.Format("{0,-15}{1}", parts[0], parts[1]);

当然,一些输入检查会很好......你所要求的仍然可能需要修改,并且对你展示的每个部分都有单独的控制

于 2013-03-20T19:59:03.083 回答
1
string[] records = inputString.Split('\n');
foreach(var record in records)
{
   string[] fields = record.Split('\t');
   // do stuff with the fields, here, (independently of tabs) 
}

编辑@JonSkeet 比我快 30 秒,但我要留下这个代码示例 b/c 他的答案缺少一个

于 2013-03-20T19:52:55.760 回答
0

看看这个答案。您尚未指定您使用的是 wpf 还是 wf,但它应该是类似的。

于 2013-03-20T19:52:58.500 回答