我应该使用Winforms组合框的SelectedItem,SelectedText还是SelectedValue?

时间:2012-04-24 20:08:29

标签: winforms combobox selecteditem selectedvalue selectedtext

我想将组合框中的值作为参数传递给SQL语句。 Winforms组合框为我提供了几个检索值的选项,即SelectedItem,SelectedText和SelectedValue。在这种情况下哪一个最好/最安全?

4 个答案:

答案 0 :(得分:9)

if (comboBox1.DropDownStyle == DropDownStyle.DropDown || 
    comboBox1.DropDownStyle == DropDownStyle.Simple)
{
    return comboBox1.Text;
}

Text可能是最好用的。这将从ComboBox中将当前选定的文本作为字符串获取。

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

对于此样式,您无法从ComboBox获取文本。这将返回当前SelectedIndex的项目中的字符串。

答案 1 :(得分:7)

SelectedValue可能是最好用的 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.)

答案 2 :(得分:5)

取决于3件事1. 模式 2. DropDownStyle 3. 必需值

在ComboBox.SelectedIndexChanged

  • 未约束模式

    一个。 DropDownStyle = DropDown

    • SelectedItem将返回= SelectedText
    • SelectedValue将返回=“”
    • SelectedText将返回= SelectedText

      湾DropDownStyle = DropDownList

      • SelectedItem将返回= SelectedText
      • SelectedValue将返回=“”
      • SelectedText将返回=“”
  • 使用数据绑定模式(表示您从某些数据源填充ComboBox,即SQL Server表) 您将选择表的列作为DisplayMember,并选择与ValueMember相同或另一列。

    一个。 DropDownStyle = DropDown

    • SelectedItem将返回= System.Data.DataRowView(提示)
    • SelectedValue将返回= ValuMemeber的值
    • SelectedText将返回= SelectedText(DisplayMember的值)

      湾DropDownStyle = DropDownList

      • .SelectedItem将返回= System.Data.DataRowView(提示)
      • .SelectedValue将返回= ValueMember的值
      • .SelectedText将返回=“”

注意:您也可以使用返回= ComboBox文本的.Text

结论:

  1. Unboud模式

    • .SelectedItem是最佳选择
  2. 数据绑定模式

    一个。 ValueMember是必需的

    • .SelectedValue是最佳选择

      湾需要DisplayMember

      • 。文本是最佳选择

答案 3 :(得分:0)

SelectedItem 似乎是一个安全的选择。

我有这段代码:

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

......与NRE坠毁。

将其更改为:

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

......工作正常。