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

d6kp6zgx  于 2022-11-25  发布在  其他
关注(0)|答案(5)|浏览(174)

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

hpcdzsge

hpcdzsge1#

SelectedValue可能是最好使用的值
SelectedText将为您提供可编辑部分的选定文本,Selected Item将返回对象,Selected index将返回索引。通常对于应用程序,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.)
h7wcgrx3

h7wcgrx32#

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的项目传回字串。

rkttyhzu

rkttyhzu3#

它取决于三个因素1.模式2.下拉式样式3.必需值
在组合框上.已更改选定索引

  • 未绑定模式

a.下拉式样式=下拉式

  • 选定项将返回=选定文本
  • 选定值将返回=“”
  • 选定文本将返回=选定文本

B.下拉列表样式=下拉列表

  • 选定项将返回=选定文本
  • 选定值将返回=“”
  • 选定文本将返回=“”
  • 使用数据绑定模式(意味着从某个数据源(即SQL Server表)填充组合框)您将选择表中的一列作为DisplayMember,并选择同一列或另一列作为ValueMember。

a.下拉式样式=下拉式

  • SelectedItem将返回=系统.数据.数据行视图(提示)
  • SelectedValue将返回=值成员的值
  • 选定文本将返回=选定文本(显示成员的值)

B.下拉列表样式=下拉列表

  • .SelectedItem将返回=系统.数据.数据行视图(提示)
  • 。SelectedValue将返回= ValueMember的值
  • .SelectedText将返回=“”

注意:您也可以使用.Text,它将返回=组合框的文本
结论:

  • 未绑定模式
  • .SelectedItem是最佳选择
  • 数据系结模式

a.需要ValueMember

  • .SelectedValue是最佳选择

B.显示成员是必需的

  • .文本是最佳选择
oipij1gg

oipij1gg4#

Microsoft建议使用此值

ComboBox1.SelectedItem.ToString()
20jt8wwn

20jt8wwn5#

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

我有这样的代码:

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

......它和一台NRE一起坠毁。
将其更改为以下内容后:

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

......工作正常。

相关问题