19

私はlistViewawindowsFormで を使用する方法を学んでおり、ここで解決したい問題がいくつかあります。最初のことは、以下のコードで列を作成しているときです。

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

4

4 に答える 4

45

最初の問題は、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;

ご不明な点がございましたら、お気軽にお問い合わせください。お役に立てれば幸いです。

于 2012-07-03T13:02:50.010 に答える
39

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

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);

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

于 2014-12-10T22:25:42.903 に答える