1

我有一个列表框,我想在其中显示一个字符类的名称和高分列表。我使用ListBox.Items.Add为每个字符添加以下字符串:

public String stringHighscore()
    {
        return name + "\t\t\t" + score.ToString();
    }

问题是当名字超过一定长度时,分数会被推到右边。列表框看起来像这样(抱歉,我的代表还不允许我发布图片):

(链接到 tinypic 上的列表框图像)

我认为这可能是由于“\t”,但我不确定。我该如何解决这个问题并正确对齐分数?如果我使用两个列表框,一个用于名称,一个用于分数,会更好吗?

4

3 回答 3

1

你可以使用String.PadRight方法。

返回一个新字符串,该字符串通过在右侧用空格填充字符来左对齐该字符串中的字符,达到指定的总长度。

假设您最多有 20 个字符的name长度

public String stringHighscore()
{
     return name + name.PadRight(20 - name.Length) + "\t\t\t" + score.ToString();
}

如果您的姓名长度为13,这将添加7空格字符。这样一来,您的全名长度20最后将等于 ( )。

于 2013-05-04T22:00:03.890 回答
0

看看这篇 csharp-examples 文章:

将字符串与空格对齐。

官方参考,看Composite Formatting

祝你好运!

于 2013-05-04T22:01:44.050 回答
0

在我看来,您最好使用ListView而不是尝试自己手动对齐任何东西。使用比使用简单的列表框更难,所有配置都可以在 IDE 中完成(我假设您使用的是 VisualStudio,或类似强大的 IDE)。

假设您有一个名为的 ListView 项目scoresListView。在 IDE 中,您可以将 View 属性设置为 Details,这将导致列表呈现在给定宽度的列中,顶部有一个标题(我认为您需要“Name”和“Score”)。添加列的代码如下所示(using System.Windows.Forms为了便于阅读,我假设您的 C# 文件顶部有一个子句):

scoresListView.Columns.Add("Name", 200); // add the Names column of width 200 pixels
scoresListView.Columns.Add("Score", 200, HorizontalAlignment.Right); // add the Score column of width 200 pixels (Right Aligned for the sake of demonstration)

将项目(名称/分数对)添加到列表视图可以很简单:

string myName = "abcdef"; // sample data
int myScore = 450;
scoresListView.Items.Add(new ListViewItem(new string[] { myName, myScore.ToString() } )); // add a record to the ListView

抱歉,没有太多解释,希望这对现在或将来有所帮助 - ListView 是一个非常有用的控件。

于 2013-05-04T22:19:09.407 回答