1

Winforms では、以下に示すように、アイテム インデックス番号とアイテムを含むリスト ボックスを表示したいと考えていました形。私は多くのSOリンクと多くの記事も調べましたが、それらのほとんどはListBoxの代わりにListViewを使用しており、リストアイテムのインデックスを表示する代わりに、Image + Itemを表示しています。私はリストビューで問題ありませんが、私の目的は対応するインデックスでアイテムを表示することであり、選択するとアイテムのみが表示されます。C#を使用してWinformでこれを達成するためのリンクやアイデアを誰かに提供してもらえますか?

前もって感謝します。

4

3 に答える 3

0

リストボックスをカスタマイズできます

次のリンクは正しい方向を案内します。

http://www.codeproject.com/Articles/15464/Extending-the-ListBox-to-show-more-complex-items

于 2013-01-28T11:45:36.110 に答える
0

リストボックスの DrawMode プロパティを DrawMode.Manual に設定し、コード内のアイテムの描画を処理することを検討する必要があると思います。

http://msdn.microsoft.com/en-us/library/system.windows.forms.drawmode.aspxをご覧ください。

于 2013-01-28T11:58:36.427 に答える
0

あなたにとって最良のオプションはDataGridView、2つの列で使用することだと思います:

  • DataGridViewButtonColumn、AutoSizeMode = AllCells
  • DataGridViewTextBoxColumn、ReadOnly = true、AutoSizeMode = 塗りつぶし

またRowHeadersVisibleColumnHeadersVisible偽に。結果:

ここに画像の説明を入力

コード:

string[] members = { "Beverages", "Condiments", "Confections" };
dataGridView1.DataSource = members.Select((x, i) => new { Value = x, Index = i })
                                  .ToList();

DataPropertyNameまた、列をインデックスと値に設定する必要があります。

更新 (.NET 2.0 の場合):

string[] members = { "Beverages", "Condiments", "Confections" };
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = members;

CellFormatting イベントをサブスクライブします。

void dataGridView1_CellFormatting(object sender, 
                                  DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        e.Value = e.RowIndex;
        return;
    }

    e.Value = dataGridView1.Rows[e.RowIndex].DataBoundItem;
}
于 2013-01-28T12:31:25.227 に答える