0

リストボックスに入れたい 2 つのリストがあります。最初のリストには名前が含まれ、2 番目のリストには数字が含まれています。問題は、名前の一部が長いため、同じ行に数字を表示できないことです。

listBox.Items.Add("Name" + "\t\t\t" + "Number");
for (int i = 0; i < lists.Count; i++)
{
    listBox.Items.Add(lists._namesList[i] + "\t\t\t" + lists._numbersList[i]);
}

ここでの更新は、私が試したものですListView

listViewProtocols.View = View.Details;
listViewProtocols.Columns.Add("Name");
listViewProtocols.Columns.Add("Number");

for (int i = 0; i < lists._protocolsList.Count; i++)
{
    listViewProtocols.Items.Add(new ListViewItem{ lists._nameList[i], lists._numbersList[i].ToString()});
}
4

2 に答える 2

1

ListViewコンポーネントをDetailsスタイル付きで使用することを検討してください。@Yuckがコメントで述べたように、それはあなたに必要な効果を与えるでしょう。

ListViewの例

2つの別々のリストからデータを入力するのは少し厄介ですが、以下のコードで実行できます。

listView1.View=View.Details;
listView1.Columns.Add("Name");
listView1.Columns.Add("Number");

string[] names= { "Abraham", "Buster", "Charlie" };
int[] numbers= { 1018001, 1027400, 1028405 };

for(int i=0; i<names.Length; i++)
{
    listView1.Items.Add(
        new ListViewItem(new string[] {
        names[i], numbers[i].ToString() }));                
}

次のような個別のリストではなく、構造体の配列を実行することを強くお勧めします。

public struct Record
{
    public string name;
    public int number;

    public string[] ToStringArray()
    {
        return new string[] {
            name,
            number.ToString() };
    }
}

そしてこのように使用されます:

    listView1.View=View.Details;
    listView1.Columns.Add("Name");
    listView1.Columns.Add("Number");

    Record[] list=new Record[] {
        new Record() { name="Abraham", number=1018001 },
        new Record() { name="Buster", number=1027400 },
        new Record() { name="Charlie", number=1028405 }
    };

    for(int i=0; i<list.Length; i++)
    {
        listView1.Items.Add(
            new ListViewItem(list[i].ToStringArray()));
    }
于 2012-04-04T18:31:28.203 に答える
0

私が考えることができるオプションがいくつかあります:

  1. 長いテキストに対応したり、水平スクロールバーを追加したりできるように、リストボックスの幅を広げます。
  2. 名前の最大長を 20 文字に制限し、余分な文字を....
  3. おそらく最良の解決策は、リストボックスの代わりにグリッドを使用することです.2列のデータを表示する必要があります.これはまさにグリッドの目的です.
于 2012-04-04T18:06:17.630 に答える