none
System.windows.controls.listbox 選択された値の取得 RRS feed

  • 質問

  • 方法がどこにも載っていないためわかりません。

    教えてください。

    ListBox1.SelectedIndexは、インデックスを返すのですが。

     

    2011年6月20日 7:27

回答

  • SelectedItem プロパティを使います。以下参考にどうぞ。

    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
      var item = (ListBoxItem)this.listBox1.SelectedItem;
      MessageBox.Show(item.Content.ToString());
    }
    


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 7:56
    モデレータ
  • ListBox が DataTable とバインドされている場合、SelectedValue が使えます。

    public MainWindow()
    {
    	InitializeComponent();
    
    	// DataTable とバインド
    	var dt = new DataTable();
    	dt.Columns.Add("id", System.Type.GetType("System.Int32"));
    	dt.Columns.Add("name", System.Type.GetType("System.String"));
    
    	dt.Rows.Add(new object[] { 0, "田中" });
    	dt.Rows.Add(new object[] { 1, "山田" });
    	dt.Rows.Add(new object[] { 2, "鈴木" });
    	dt.Rows.Add(new object[] { 3, "高橋" });
    
    	listBox1.SelectedValuePath = "id";
    	listBox1.DisplayMemberPath = "name";
    	listBox1.ItemsSource = dt.DefaultView;
    }
    
    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    	MessageBox.Show(this.listBox1.SelectedValue.ToString());
    }
    


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 8:19
    モデレータ
  • 恰好のサンプルがコードレシピにありました。こちらは XAML ベースですね。

    http://code.msdn.microsoft.com/XAMLVBC-ListBox-WPF-30e50cbd


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 8:34
    モデレータ

すべての返信

  • SelectedItem プロパティを使います。以下参考にどうぞ。

    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
      var item = (ListBoxItem)this.listBox1.SelectedItem;
      MessageBox.Show(item.Content.ToString());
    }
    


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 7:56
    モデレータ
  • ListBox が DataTable とバインドされている場合、SelectedValue が使えます。

    public MainWindow()
    {
    	InitializeComponent();
    
    	// DataTable とバインド
    	var dt = new DataTable();
    	dt.Columns.Add("id", System.Type.GetType("System.Int32"));
    	dt.Columns.Add("name", System.Type.GetType("System.String"));
    
    	dt.Rows.Add(new object[] { 0, "田中" });
    	dt.Rows.Add(new object[] { 1, "山田" });
    	dt.Rows.Add(new object[] { 2, "鈴木" });
    	dt.Rows.Add(new object[] { 3, "高橋" });
    
    	listBox1.SelectedValuePath = "id";
    	listBox1.DisplayMemberPath = "name";
    	listBox1.ItemsSource = dt.DefaultView;
    }
    
    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    	MessageBox.Show(this.listBox1.SelectedValue.ToString());
    }
    


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 8:19
    モデレータ
  • 恰好のサンプルがコードレシピにありました。こちらは XAML ベースですね。

    http://code.msdn.microsoft.com/XAMLVBC-ListBox-WPF-30e50cbd


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2011年6月29日 8:26
    • 回答としてマーク 山本春海 2011年7月4日 6:21
    2011年6月20日 8:34
    モデレータ