2

今、私が使っている欲しいものを確実に手に入れるために

actionComboBox.Items[actionComboBox.SelectedIndex].ToString()

my にアイテムとして保存されている文字列を取得するTextBox

選択したプロパティの 1 つが上記のステートメントを返しますか? それらを使用すると、欲しいものを手に入れることができないようです。

同様にactionComboBox.SelectedItem as string、上記の値を返しますか?

編集:

ここでの本当の質問は次のとおりだと思います。選択された各プロパティは、次のように何を返しますか。SelectedItem, SelectedValue, SelectedText.

4

2 に答える 2

2

SelectedTextコンボ ボックス内のテキストを編集できれば、選択されているテキストを返すと思います。DropDownListユーザーがコンボボックスに値を入力できないスタイルが選択されている場合は、このプロパティを使用しないと思います。

SelectedValueデータソースにバインドしている場合にのみ適用されます。SelectedValue選択したデータソースのアイテムを返すか、DisplayMemberフィールドに入力した場合は、指定したプロパティ/列の値を返します。

SelectedItemデザイナーを介してリスト項目を入力したばかりの場合、選択された項目が返されます。

私はいつもこれらにやけどを負っています。なぜなら、私はいつも忘れているからです。あなたの例の大きな問題は、これらのプロパティの戻り値に影響を与える項目がコンボ ボックスにどのように入力されるかです。

于 2012-05-10T18:22:47.703 に答える
1

ComboBox.Itemsは のコレクションなSystem.Objectので、何でもかまいません。デフォルトでComboBoxは、オブジェクトのToStringメソッドの戻り値が表示されます。に追加するものは何でも返されますComboBoxが、それは として返され、System.Objectメンバーにアクセスするには元の型に戻す必要があります。

comboBox.Items.Add("foo");

上記は に a を追加System.StringComboBoxます。

class Foo
{
    public String Bar { get; set; }
}

Foo foo = new Foo();
foo.Bar = "Value";

comboBox.Items.Add(foo);

上記は に a を追加FooComboBoxます。だからあなたの価値を取り戻すために。

Object obj = comboBox.Items[comboBox.SelectedIndex];
Foo foo = obj as Foo;

if (foo != null) { // check just in case
}

文字列の場合、変換の必要はありません。呼び出しToStringで問題ありません。代わりに使用することをお勧めしますSelectedItem

Foo foo = comboBox.SelectedItem as Foo;
if (foo != null) { // again, check to make sure
}

の威力は、ComboBoxのコレクションを格納するため、System.Object複数のタイプのオブジェクトを格納できることですが、アクセスする必要があるときに、元の使用可能なタイプに変換する必要があります。

于 2012-05-10T17:55:32.837 に答える