vb.net中的组合框combobox如何手动设置其显示值与返回值?

changshaoxi816 2012-03-17 02:50:42
如:
显示值:高一、高二、高三
返回值:2011、2010、2009
用户选择高一,返回2011
用户选择高二,返回2010
用户选择高三,返回2009
要手动赋值?

另外,还有对于组合框combobox里面的属性,如:ValueMember、DisplayMember、SelectedText、SelectedValue、SelectedItem、SelectedIndex等属性无法透彻深入的了解,不知有哪位高手能用实例讲解???
...全文
1141 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
changshaoxi816 2012-03-22
  • 打赏
  • 举报
回复
高手们提供的n种方法都能用哟,可真是辛苦你们了,对你们表示由衷的感谢!
数hztltgg提供的最简单,数jane_zhao提供的最容易理解,而且根据大师们提供的方法,我自己也研究出了两种似类似的方法,而且把它们一总结,上专到csdn上面了,名称为“vb.net中组合框ComboBox实现显示值与返回值不同的几种方法”,希望能方便那些跟我一样痛苦的学习者。
l_g_guo 2012-03-19
  • 打赏
  • 举报
回复
是的,可以在msdn上查看各种详细信息,也有代码实例。可以输入控件名称进行搜索。
andymdj 2012-03-19
  • 打赏
  • 举报
回复
ComboBox1.Items.Add("高一")
ComboBox1.Items.Add("高二")
ComboBox1.Items.Add("高三")

返回值根据SelectedIndex值(0,1,2)设置

这类基础的问题你可以参考MSDN
tyhjx 2012-03-19
  • 打赏
  • 举报
回复
Dim dt = New DataTable()
Dim dr As DataRow
Dim arr(2, 1) As String
arr(0, 0) = "高一"
arr(0, 1) = "2011"
arr(1, 0) = "高二"
arr(1, 1) = "2010"
arr(2, 0) = "高三"
arr(2, 1) = "2009"

dt.Columns.Add("t")
dt.Columns.Add("v")
For i As Integer = 0 To UBound(arr)
dr = dt.NewRow()
dr("t") = arr(i, 0)
dr("v") = arr(i, 1)
dt.Rows.Add(dr)
Next
ComboBox1.DataSource = dt
ComboBox1.ValueMember = "v"
ComboBox1.DisplayMember = "t"
hztltgg 2012-03-19
  • 打赏
  • 举报
回复
SelectedText 和之前说的还不一样,这个是作为文本框的属性,只是得到文本框反选的那些文字,用来复制粘贴一类的用法。和SelectedValue、SelectedItem、SelectedIndex不是一个概念
changshaoxi816 2012-03-19
  • 打赏
  • 举报
回复
高手啊,高手,每每当你们告诉我们那些我不知道(网络上书上找不到或很难找到)的东东时,你不知道我是想多么多么的感谢你们啊,尽管你们给我的一些东东,我还没有到vb.net里面调试,但直觉告诉我,你们这么多的指点一定能够解决的,真希望csdn也能像nipic那样做,让想学的人能学到,让想帮助的人能帮助到,达到“人人为我,我为人人”的境界!
hztltgg 2012-03-19
  • 打赏
  • 举报
回复
这个和网页上的下拉框设计理念不同,网页的下拉框就是显示值和返回值两个字符串的列表。

但桌面版的功能要高级的多,他可以放任何对象,显示的就是该对象ToString后的值。如果你要得到返回的值(这儿说值都不太正确,是返回的对象),那么就应该用 ComboBox1.SelectedItem 或者ComboBox1.SelectedIndex ,前者返回放到列表里的对象本身,后者返回在列表的顺序号。

如果你用不着这些功能,只是想和网页版类似的实现显示值和返回值的功能,那么用绑定的方法也很方便


Dim list As New List(Of Tuple(Of Integer, String))

list.Add(New Tuple(Of Integer, String)(2011, "高一"))
list.Add(New Tuple(Of Integer, String)(2010, "高二"))
list.Add(New Tuple(Of Integer, String)(2009, "高三"))

ComboBox1.DataSource = list

ComboBox1.DisplayMember = "Item2"
ComboBox1.ValueMember = "Item1"


如果你要自己定义年级类的话也是可以的,在外边先定义一个年级类

Class Grade

Public Property Year As Integer
Public Property Name As String

End Class

代码

Dim grade As New List(Of Grade) From {
New Grade With {.Year = 2011, .Name = "高一"},
New Grade With {.Year = 2010, .Name = "高二"},
New Grade With {.Year = 2009, .Name = "高三"}}

ComboBox2.DataSource = grade

ComboBox2.DisplayMember = "Name"
ComboBox2.ValueMember = "Year"

这样看着比较好看
jane_zhao 2012-03-19
  • 打赏
  • 举报
回复
dim dtSource as new datatable()
dtSource.Columns.add("key")
dtSource.Columns.add("value")
dtSource.loaddatarow(new object(){"2011","高一"},true)
dtSource.loaddatarow(new object(){"2010","高二"},true)
dtSource.loaddatarow(new object(){"2009","高三"},true)

combobox1.datasource=dtSource ‘绑定数据源
combobox1.ValueMember="key" 'ValueMember=画面显示栏位对应的key值
combobox1.DisplayMember="value"'DisplayMember=画面显示的栏位

combobox1.selectedValue就是对应的key值(2011,2010,2009),画面显示的是value值(高一,高二,高三)
bdmh 2012-03-19
  • 打赏
  • 举报
回复
看帮助,再不行,自己添加一些数据,逐个访问那几个属性,看看都是什么值
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 changshaoxi0820 的回复:]
如:
显示值:高一、高二、高三
返回值:2011、2010、2009
用户选择高一,返回2011
用户选择高二,返回2010
用户选择高三,返回2009
要手动赋值?

另外,还有对于组合框combobox里面的属性,如:ValueMember、DisplayMember、SelectedText、SelectedValue、SelectedItem、SelectedIndex等属……
[/Quote]
参考http://edu.cnzz.cn/NewsInfo/10903.aspx
建议多看看MSDN
changshaoxi816 2012-03-18
  • 打赏
  • 举报
回复
发个贴看都没人看,谁能告诉我这是为什么啊?

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧