我跟着this Wordpress tutorial效果很好。我使用了listview,当我尝试格式化字符串时,它无法识别\t
(但确实识别\n
)。它也不会识别String.Format
等。
无论如何我可以使用制表符或类似的东西来格式化字符串吗?
干杯
修改
for( i = 0; i < lstView.Items.Count;i++)
{
name = lstView.Items[i].Text;
state = lstView.Items[i].SubItems[1].Text;
country = lstView.Items[i].SubItems[2].Text;
line += name + "\t" + state + "\t" + country + "\n";
}
StringReader reader = new StringReader(line);
当使用line打印时,字符串连接在一起,因此\ t不起作用。但是新行的\ n确实有效。有没有人知道我可以在不使用空格的情况下格式化字符串。
结果是这样的
NameStateCountry
LongernameStateCountry
anotherNameAnotherStateAnotherCountry
我希望他们排成一行(如表中所示),名称为一列,说明另一列和国家,然后是第三个
任何建议都非常感谢
答案 0 :(得分:1)
嗯,标签丢失有点奇怪,但另一方面,如果各个字符串元素(名称,状态等)的长度不同,标签可能会出现问题。
你可以做的是使用string.Format()
并使用固定的列宽
为了获得良好的视觉输出,这将包括一个解析步骤来确定正确的列宽
完成后,使用类似的东西来使用空格而不是制表符。
string line = string.Format("{0,-20}{1,-20}{2,-20}", "name", "state", "country");
编辑:看到您不想使用空格
在这种情况下,您可能需要在打印算法本身中处理此问题。您仍然可以使用制表符分隔项目,然后为每行分割选项卡,每行创建一个项目(列)数组
对于每个项目,使用Graphics.DrawString()
以适当的X位置偏移打印它。
请参阅Graphics.DrawString的文档。