web-dev-qa-db-ja.com

listViewで列を作成し、アイテムを追加する

listViewwindowsFormを使用する方法を学んでいますが、ここで解決したい問題がいくつかあります。最初のことは、次のコードでを作成する場合です:

private void initListView()
    {
        // Add columns
        lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
    }

プログラムを実行すると、列の名前は表示されず、すべて左隅にあり、テキストを読むために「ドラッグ」する必要があります。何が間違っていますか?

そして最後に、列に項目を追加する方法を疑問に思います。最初に次のようなオブジェクトを作成しますか

ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");

各listViewItemオブジェクトは列ですか、それとも行ですか?情報の行を追加するにはどうすればよいですか?助けてください!ありがとう!

16
3D-kreativ

最初の問題は、Columns.Addの2番目のパラメーターに-3を渡すことです。列のサイズを自動調整するには、-2にする必要があります。ソース: http://msdn.Microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx (下部のコード例のコメントをご覧ください)

private void initListView()
{
    // Add columns
    lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}

他のオーバーロード、Add(string)を使用することもできます。例えば:

lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");

その他のオーバーロードのリファレンス: http://msdn.Microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx

第二に、ListViewにアイテムを追加するには、ListViewItemのインスタンスを作成し、それらをlistViewのItemsコレクションに追加する必要があります。 string []コンストラクターを使用する必要があります。

var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);

オブジェクトをアイテムのTagプロパティに保存することもできます。

item2.Tag = person;

そして、あなたはそれを抽出することができます

var person = item2.Tag as Person;

ご質問がある場合はお知らせください。これがお役に立てば幸いです。

40
Tom

誰もこれに正しく答えるのを見ませんでした。だからここに投稿しています。列を表示するには、次の行を指定する必要があります。

lvRegAnimals.View = View.Details;

その後、列を追加します。

lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);

これが将来この答えを探している他の誰かに役立つことを願っています。

33
IamBatman

コントロールのプロパティを設定する必要があります。

listView1.View = View.Details;
6
Navin Pandit
            listView1.View = View.Details;
        listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
        listView1.Columns.Add("   Range   ", 100, HorizontalAlignment.Center);
        listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);     

私も同じ問題を抱えていました..列を左にドラッグします..今は大丈夫です..なので、リストビューのサイズが283 * 196であるとしましょう...自動幅のために列幅-2で宣言しました..フィッティングのためにリストビューでは、リストビューの幅を3つの部分(83,100,100)に分割できます...

0
U Zay Yar