1

文字クラスの名前とハイスコアのリストを表示したいリストボックスがあります。ListBox.Items.Add各文字に次の文字列を追加するために使用します。

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

問題は、名前が特定の長さを超えると、スコアが右に押し出されることです。リストボックスは次のようになります (申し訳ありませんが、私の担当者はまだ画像を投稿することを許可していません):

(tinypic のリストボックス画像へのリンク)

これは「\t」が原因かもしれないと思っていましたが、よくわかりません。どうすればこれを解決し、スコアを適切に揃えることができますか? 名前用とスコア用の 2 つのリストボックスを使用した方がよいでしょうか?

4

3 に答える 3

1

メソッドを使用できますString.PadRight

この文字列内の文字を、指定された合計長になるように右側にスペースを埋め込むことで左揃えにした新しい文字列を返します。

name最大で20文字の長さがあるとしましょう

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の記事を見てください:

文字列をスペースで揃えます。

公式の参照については、複合フォーマットを参照してください

幸運を!

于 2013-05-04T22:01:44.050 に答える
0

自分で何かを手動で調整しようとするのではなく、 ListViewを使用するのが最善のように思えます。使い方は、単純なリスト ボックスを操作するよりもはるかに難しく、すべての構成は IDE で行うことができます (VisualStudio または同様の強力な IDE を使用していると仮定しています)。

という ListView アイテムがあるとしscoresListViewます。IDE から View プロパティを Details に設定できます。これにより、リストが特定の幅の列にレンダリングされ、上部に見出しが表示されます (「名前」と「スコア」が必要になると思います)。列を追加するコードは次のようになります (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 に答える