2012-04-24 10 views
9

コンボボックスの値をparamとしてSQL文に渡したいとします。 Winformsのコンボボックスは、値を取得するためのいくつかのオプション、つまりSelectedItem、SelectedText、およびSelectedValueを提供します。このシナリオでは、どれが最も安全な/安全なものか?WinformsのコンボボックスのSelectedItem、SelectedText、またはSelectedValueを使用する必要がありますか?

+0

はDropDownStyleプロパティの値は何ですか? –

答えて

6


SelectedTextは編集可能部分の選択されたテキストを表示し、Selected Itemはオブジェクトを返し、選択したインデックスはインデックスを返します。通常、SelectedValueが抽出され、使用されます。 がCombobox from MSDN

SelectedIndex Gets or sets the index specifying the currently selected item.    (Overrides ListControl.SelectedIndex.) 
SelectedItem Gets or sets currently selected item in the ComboBox. 
SelectedText Gets or sets the text that is selected in the editable portion of a ComboBox. 
SelectedValue Gets or sets the value of the member property specified by the ValueMember property. (Inherited from ListControl.) 
+0

私はついにこれをテストしました。 SelectedValueを試したとき、それは爆撃されました。ただし、SelectedItemは機能します。 // String Center = comboBoxCenters.SelectedValue。ToString(); - オブジェクトがインスタンス化されていないことを示すエラーメッセージ(とはい、それを実行したときにnullだった) String Center = comboBoxCenters.SelectedItem.ToString(); // < - これは問題なく動作します –

8

Textがおそらく最も適しています。これは、ComboBoxから現在選択されているテキストを文字列として取得します。

if (comboBox1.DropDownStyle == DropDownStyle.DropDownList) 
{ 
    return comboBox1.GetItemText(comboBox1.SelectedItem); 
} 

このスタイルでは、ComboBoxからテキストを取得できません。これにより、現在SelectedIndexの項目から文字列が返されます。

0

をチェックアウトのSelectedItem安全な選択であるように思われます。

私はこのコードを持っていた:

NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedValue.ToString(); 

... NREに墜落しました。これにそれを変更した後

NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedItem.ToString(); 

...それが正常に動作します。

1

それは3つの事1. モードComboBox.SelectedIndexChanged

  • 結合していないモード

    で 2. DropDownStyle 3. 必要な値

    に依存します。 DropDownStyle =ドロップダウン

    • のSelectedItemは
    • SelectedTextは= SelectedText

      B戻ります "" = = SelectedText

    • SelectedValueのが返す戻ります。DropDownStyle = DropDownListコントロール

      • のSelectedItemは= SelectedTextが
      • SelectedValueのは
  • 使用するデータは、モード(手段バウンド " "

  • SelectedTextが返されます="" =戻ります戻りますいくつかのデータソース、つまりSQL Serverテーブルからコンボボックスを作成しています) テーブルの列を次のように選択します。 DisplayMemberとValueMemberと同じ列または別の列。

    a。 DropDownStyle =ドロップダウン

    • のSelectedItemは= System.Data.DataRowView
    • (プロンプト)SelectedValueのは=値ValuMemeber
    • のSelectedTextは= SelectedText(DisplayMemberの値)

      B戻ります戻ります戻ります。 DropDownStyle = DropDownListコントロール

      • .SelectedItemが返されます= System.Data.DataRowView(プロンプト)
      • .SelectedValueは=値
      • .SelectedTextが返されます
      • = ""
  • たValueMemberを返します。

注:ComboBoxのテキストを返す.Textを使用することもできます。

結論:

  1. Unboudモード

    • .SelectedItemはモード

      バウンド

  2. データ最良の選択です。 ValueMemberでは.SelectedValueが最良の選択

    bは

    • が必要です。 DisplayMemberが

      • の.text必要とされる最良の選択
関連する問題