黑马程序员技术交流社区

标题: winform中的ComboBox问题 [打印本页]

作者: 李景荣    时间: 2013-2-24 00:07
标题: winform中的ComboBox问题
本帖最后由 李景荣 于 2013-2-24 12:55 编辑

text属性存的是当前选择的项,那ComboBox可以通过索引来访问到所选的项吗?
combobox.Item[combobox.selectedIndex]  这样应该会报错的吧?
SelectedValue,SelectedText这两个属性又有什么区别呢?
作者: 彭清贵    时间: 2013-2-24 03:57
如果乱了,记得有个this.xxx.text就是本类的
作者: 戴鑫凯    时间: 2013-2-24 11:32
本帖最后由 pokemon 于 2013-2-24 11:37 编辑

text属性存的是当前选择的项,那ComboBox可以通过索引来访问到所选的项吗?
可以

int selectedIndex = this.SelectedIndex;   
if (SelectedIndex!=-1)
{

return this.Items[selectedIndex];
}      
return null ;


这个是SelectItem 中的一部分代码



combobox.Item[combobox.selectedIndex]  这样应该会报错的吧?
你是说selectedItem吧,会报错 combobox.selectedItem是当前选择的项,如果你要这么搞,把combobox.Item改成combobox.Items就ok了
SelectedValue,SelectedText这两个属性又有什么区别呢?
不晓得.{:soso_e122:} 坐等楼下高手

作者: 颜晓峰    时间: 2013-2-24 12:33
本帖最后由 颜晓峰 于 2013-2-24 13:02 编辑

1.首先,text属性代表的并不是当前选择的项,而且文本框中的内容,比如你开始没选择下拉列表里的项,随便在文本框中输入,或者放空,那都是text属性的内容。text只会管文本框中有什么,不会知道你选择了什么。
2.要通过索引来访问到所选的项,有个由内容找索引的方法如下: 我们用这个简单的界面来做测试。在按钮的点击事件中写上: private void button1_Click(object sender, EventArgs e)
        {
            button1.Text = comboBox1.Items[comboBox1.Items.IndexOf(comboBox1.Text)].ToString();
        }
红色部分既是选中项的索引,当然前提是combox1.text的内容确实是与combox的某项一样。
3.SelectedValue可以用于有绑定项时。如数据库是有个表:table
id     name
1       abc
2       def
3       ghi
...

comboBox1.DataSource = table;
comboBox1.DisplayMemeber = "name";
comboBox1.ValueMember = "id";

假设是这样绑定的,那么comboBox1.SelectedValue返回的是当前选择的项的id值。
(顺便说一句:如果是绑定,那么不要让用户通过comboBox手动输入值,让他只能通过下拉选择)
4.SelectedText用于获取或设置文本框中选定的内容。如: SelectedText所代表的就是蓝色部分cc。

以上皆为本人暂时的理解,如有错漏,请尽情蹂躏{:soso_e106:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2