我想将组合框中的值作为参数传递给SQL语句。 Winforms组合框为我提供了几个检索值的选项,即SelectedItem,SelectedText和SelectedValue。在这种情况下哪一个最好/最安全?
答案 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
SelectedText将返回= SelectedText
湾DropDownStyle = DropDownList
使用数据绑定模式(表示您从某些数据源填充ComboBox,即SQL Server表) 您将选择表的列作为DisplayMember,并选择与ValueMember相同或另一列。
一个。 DropDownStyle = DropDown
SelectedText将返回= SelectedText(DisplayMember的值)
湾DropDownStyle = DropDownList
注意:您也可以使用返回= ComboBox文本的.Text
结论:
Unboud模式
数据绑定模式
一个。 ValueMember是必需的
.SelectedValue是最佳选择
湾需要DisplayMember
答案 3 :(得分:0)
SelectedItem 似乎是一个安全的选择。
我有这段代码:
NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedValue.ToString();
......与NRE坠毁。
将其更改为:
NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedItem.ToString();
......工作正常。