it-swarm-ja.tech

C#およびWinFormsでリストボックスにアイテムを追加するにはどうすればよいですか?

WinFormsで ListBox にアイテムを追加する方法を理解するのに問題があります。

私が試してみました:

list.DisplayMember = "clan";
list.ValueMember = sifOsoba;

ValueMember値とintのテキストを含むリストにDisplayMemberを追加するにはどうすればよいですか?

list.Items.add(?)

ところで。何らかの理由でListBoxItemを使用できません。

29
Ante
list.Items.add(new ListBoxItem("name", "value"));

ListBoxの内部(デフォルト)データ構造は、 ListBoxItem です。

15
monksy

ListBoxItemはWPFクラスであり、WinFormsクラスではありません。

WPFの場合、ListBoxItemを使用します。

WinFormsの場合、アイテムはオブジェクトタイプなので、次のいずれかを使用します。
1。 Object型に独自のToString()メソッドを提供します。
2。 DisplayMemeberおよびValueMemberでデータバインディングを使用します( ケルシーの答えを参照

29
AZ.

WinFormsでは、リストをデータバインドするときにValueMemberDisplayMemberが使用されます。データバインディングでない場合は、任意のオブジェクトをListItemとして追加できます。

キャッチは、アイテムを表示するために、ToString()が呼び出されることです。したがって、ToString()を呼び出すと意味のある出力が得られるListBoxにのみオブジェクトを追加することを強くお勧めします。

9
John Rudy
8
Kelsey

DisplayMemberとValueMemberは、これらのプロパティが定義されているオブジェクトにデータバインドしている場合にのみ、ほとんどの場合に役立ちます。次に、そのオブジェクトのインスタンスを追加する必要があります。

例えば。:

public class MyObject
{
     public string clan { get; set; }
     public int sifOsoba { get; set; }
     public MyObject(string aClan, int aSif0soba)
     {
        this.clan = aClan;
        this.sif0soba = aSif0soba;
     }

     public override string ToString() { return this.clan; }
 }

 ....

 list.Items.Add(new MyObject("hello", 5));

手動でバインドする場合は、ゴーグルが提供する例を使用できます

6
zincorp

私がこれを行う方法-イベント形式を使用して

  MyClass c = new MyClass();
  listBox1.Items.Add(c);

  private void listBox1_Format(object sender, ListControlConvertEventArgs e)
    {
        if(e.ListItem is MyClass)
        {
            e.Value = ((MyClass)e.ListItem).ToString();
        }
        else
        {
            e.Value = "Unknown item added";
        }
    }

表示テキストであるe.Value

その後、SelectedItemをMyClassにキャストして、そこにあるものにアクセスすることができます。
また、Items Collectionで(とにかくオブジェクトから継承する(ほとんどすべて))を使用できます。

5
PostMan

文字列を追加するだけの場合、簡単な答えは次のとおりです。

ListBox.Items.Add("some text");
4
netfed

整数を追加する場合、質問で言うように、これは50(1から50)を追加します:

for (int x = 1; x <= 50; x++)
{
   list.Items.Add(x);
}

ユーザーに表示する特定のプロパティを持つオブジェクトを追加する場合を除き、DisplayMemberとValueMemberを設定する必要はありません。あなたの例では:

listbox1.Items.Add(new { clan = "Foo", sifOsoba = 1234 });
1
Philip Wallace

ListBoxItem型のアイテムを作成し、Itemsコレクションに追加する必要があります。

list.Items.add( new ListBoxItem("clan", "sifOsoba"));
1
user210748