1

我有多个长度相同的字符串,但它们似乎需要不同数量的制表位才能正确格式化。我不确定谷歌的用途,也没有得到任何对我有帮助的结果,所以我在这里问。

除了创建多个我不想要的控件之外,还有什么好的解决方案......

查看 Malzahar 和 Kassadin(相同的长度,相同数量的制表位,malzahar 的格式混乱)当前代码:

if (_counter.zCounter[i].Length <= 8)
{
    DataCollection += _counter.zCounter[i] + "\t\t↑" + _counter.zUpvotes[i] + "\t↓" + _counter.zDownvotes[i] + "\n";
}
else
    DataCollection += _counter.zCounter[i] + "\t↑" + _counter.zUpvotes[i] + "\t↓" + _counter.zDownvotes[i] + "\n";
4

2 回答 2

2

字符串长度(字符数)仅与其宽度(像素数)松散相关。

您的方法仅适用于固定宽度的字体(如 Courier)。否则,您将需要使用 Measure() 函数并计算特定字体的空格/制表符。凌乱。

将您的 GUI 更改为 2 列要好得多。

于 2013-04-23T12:07:47.530 回答
0

正在使用固定宽度(等宽)字体吗?即使这样,制表符的位置也取决于字符串的长度。

当制表符前面的字符串太长时,您需要更少的制表符。这就是您的问题的来源:

str→   →   →str
strstr→→   →str
strstrstr→ →   →str

我建议您改为插入填充空格。您可以像这样计算空格数:

padding = (column - (index % column)) % column

Wherecolumn是要对齐下一个单词的从零开始的列,并且index是紧接在前一个单词之后的字符的从零开始的索引。

str·········str
strstr······str
strstrstr···str
于 2013-04-23T12:16:12.217 回答