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

2010年09月16日に質問されました。  ·  閲覧回数 64.4k回  ·  ソース

DeveloperDan picture
2010年09月16日

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

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

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

回答

Andy picture
2010年09月16日
58
<ComboBox 
  Name="cboPickOne"
  SelectedValuePath="Content"
  >
  <ComboBoxItem>This</ComboBoxItem>
  <ComboBoxItem>should be</ComboBoxItem>
  <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

コード内:

   stringValue = cboPickOne.SelectedValue.ToString()
DeveloperDan picture
2010年09月16日
11

ただ、ここでHeinziとジムBrissomの答えを明確にするためのVisual Basicのコードは次のとおりです。

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

およびC#

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

ありがとう!

Konstantin Nikolov picture
2016年09月25日
4

私はこれをしました。

string SelectedItem = MyComboBox.Text;
Jim Brissom picture
2010年09月16日
3

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

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
Mahmoud picture
2016年08月26日
2

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

youComboBox.Items.Add("Data"); 

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

youComboBox.SelectedItem; 

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

DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
Loreno picture
2016年08月30日
1

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

Heinzi picture
2010年09月16日
0
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;

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

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

Nitin Tyagi picture
2013年04月11日
-1

DataRowView.Row.Item[Index]またはItemArray[Index]プロパティを使用してSelectedItemを取得します。ここで、IndexはitemSourceとして使用されるDataTableの列のインデックスです。コンボボックス用。 あなたの場合は0になります。インデックスの代わりに、列名を渡すこともできます。

VB:

Dim sItem As String=DirectCast(cboPickOne.SelectedItem, DataRowView).Row.Item(1).ToString()

C#

String sItem=((DataRowView)cboPickOne.SelectedItem).Row.Item[1].ToString();

SelectedValueを取得するには、次を使用できます。

VB:

Dim sValue As String=cboPickOne.SelectedValue.ToString()

C#

String sValue=cboPickOne.SelectedValue.ToString();