web-dev-qa-db-ja.com

テキストエントリのみを含むコンボボックスで選択したテキストを取得する最も簡単な方法は何ですか?

私のWPF ComboBoxにはテキストエントリのみが含まれています。ユーザーがいずれかを選択します。 選択したComboBoxItemのテキストを取得する最も簡単な方法は何ですか? C#とVisual Basicの両方で答えてください。これが私のComboBoxです。

<ComboBox Name="cboPickOne">
    <ComboBoxItem>This</ComboBoxItem>
    <ComboBoxItem>should be</ComboBoxItem>
    <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

ところで、私は答えを知っていますが、見つけるのは簡単ではありませんでした。他の人を助けるために質問を投稿すると思いました。改訂:より良い答えを学びました。 SelectedValuePath = "Content"をComboBox属性として追加することにより、いキャストコードは必要なくなりました。以下のアンディの答えをご覧ください。

29
DeveloperDan
<ComboBox 
  Name="cboPickOne"
  SelectedValuePath="Content"
  >
  <ComboBoxItem>This</ComboBoxItem>
  <ComboBoxItem>should be</ComboBoxItem>
  <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

コード内:

   stringValue = cboPickOne.SelectedValue.ToString()
55
Andy

HeinziとJim Brissomの答えをここで明確にするために、Visual Basicのコードを示します。

Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()

およびC#

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();

ありがとう!

10
DeveloperDan

ComboBoxにアイテムを追加する場合

youComboBox.Items.Add("Data"); 

次にこれを使用します:

youComboBox.SelectedItem; 

ただし、データバインディングによってアイテムを追加する場合は、これを使用します。

DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
2
Mahmoud

ComboBoxItemのコンテンツが文字列のみになることを既に知っている場合は、文字列としてコンテンツにアクセスします。

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
2
Jim Brissom

これをやっただけです。

string SelectedItem = MyComboBox.Text;
2

cboPickOne.Textを使用すると、文字列が得られます。

1
Loreno
_var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;

Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)
_

knowがコンテンツが文字列であることから、ToString()メソッド呼び出しよりもキャストを好む。

0
Heinzi