2012-05-10 7 views
2

、私は私が選択した特性の一つは、私の上記を返さない私TextBox各ComboBox.Selectedは何を返しますか?今

に項目として格納されている文字列を取得するために

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

を使用していたいものを取得しています確認しますステートメント?私はそれらを使うときに私が望むものを得ることが決してできない。

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

編集:私はここに本当の質問は推測

:どのような選択された各プロパティの戻りを行うなど、 SelectedItem,SelectedValue,SelectedText

+0

あなた自身で試すことができます... – MilkyWayJoe

+0

@MilkyWayJoe:上記を読んだら、私はいつもこれらの問題を抱えているようだし、コードが壊れているので、私は現在のプロジェクトでそれらを変更しようとしていません。 –

+0

アイテムはどのようにコンボボックスに読み込まれますか?それはそれらのプロパティの戻り値に影響します。 – Kratz

答えて

2

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

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

SelectedItemは、デザイナーを使用してリストアイテムを入力したばかりの場合、選択したアイテムを返します。

私はこれらのすべての時間に燃えて、私はいつも忘れてしまう。あなたの例の大きな疑問は、アイテムがコンボボックスにどのように埋め込まれ、これらのプロパティの戻り値に影響するかということです。

1

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

comboBox.Items.Add("foo"); 

上記ComboBoxSystem.Stringを追加します。

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

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

comboBox.Items.Add(foo); 

上記ComboBoxFooを追加します。あなたの価値を取り戻すために。

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のコレクションを格納するので、あなたがオブジェクトの複数のタイプを格納できるということですが、それはときに開始するようにしたものは何でも使用可能な型に戻って変換を担当していますそれにアクセスする必要があります。

+0

しかし、SelectedValue、SelectedItem、SelectedTextの違いは何ですか? –

+1

'SelectedValue'は、データがバインドされたときに使用される値を取得し、' SelectedItem'は 'System.Object'を返し、' SelectedText'は編集可能なときに選択可能領域のテキストを返します。 Msdnのドキュメントを参照してください。http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.aspx –

関連する問題