私のWPF ComboBoxにはテキストエントリのみが含まれています。ユーザーがいずれかを選択します。 選択したComboBoxItemのテキストを取得する最も簡単な方法は何ですか? C#とVisual Basicの両方で答えてください。これが私のComboBoxです。
<ComboBox Name="cboPickOne">
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
ところで、私は答えを知っていますが、見つけるのは簡単ではありませんでした。他の人を助けるために質問を投稿すると思いました。改訂:より良い答えを学びました。 SelectedValuePath = "Content"をComboBox属性として追加することにより、いキャストコードは必要なくなりました。以下のアンディの答えをご覧ください。
<ComboBox
Name="cboPickOne"
SelectedValuePath="Content"
>
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
コード内:
stringValue = cboPickOne.SelectedValue.ToString()
HeinziとJim Brissomの答えをここで明確にするために、Visual Basicのコードを示します。
Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()
およびC#:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
ありがとう!
ComboBoxにアイテムを追加する場合
youComboBox.Items.Add("Data");
次にこれを使用します:
youComboBox.SelectedItem;
ただし、データバインディングによってアイテムを追加する場合は、これを使用します。
DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
ComboBoxItemのコンテンツが文字列のみになることを既に知っている場合は、文字列としてコンテンツにアクセスします。
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
これをやっただけです。
string SelectedItem = MyComboBox.Text;
cboPickOne.Text
を使用すると、文字列が得られます。
_var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;
Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)
_
knowがコンテンツが文字列であることから、ToString()
メソッド呼び出しよりもキャストを好む。