30

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

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

ところで、答えはわかっていますが、見つけるのは簡単ではありませんでした。他の人を助けるために質問を投稿すると思いました。リビジョン: より良い答えを学びました。SelectedValuePath="Content" を ComboBox 属性として追加することで、醜いキャスト コードは不要になりました。以下のアンディの回答を参照してください。

4

7 に答える 7

62

あなたのxmlに追加SelectedValuePath="Content"

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

このように.SelectedValue.ToString()C# コードで使用すると、余分なジャンクなしで文字列値が取得されます。

   stringValue = cboPickOne.SelectedValue.ToString()
于 2010-09-16T13:03:05.107 に答える
11

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

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

およびC#

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

ありがとう!

于 2010-09-15T20:34:43.393 に答える
8

私はちょうどこれをしました。

string SelectedItem = MyComboBox.Text;
于 2016-09-25T01:08:30.727 に答える
4

ComboBoxItem のコンテンツが文字列のみになることが既にわかっている場合は、コンテンツに文字列としてアクセスするだけです。

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
于 2010-09-15T20:23:40.687 に答える
3

ComboBoxにアイテムを次のように追加すると

youComboBox.Items.Add("Data"); 

次に、これを使用します。

youComboBox.SelectedItem; 

ただし、データ バインディングでアイテムを追加する場合は、次のようにします。

DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
于 2016-08-25T19:18:52.717 に答える
2

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

于 2016-08-30T12:39:55.390 に答える
0
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;

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

コンテンツが文字列であることがわかっているので、ToString()メソッド呼び出しよりもキャストを好みます。

于 2010-09-15T20:24:12.747 に答える