控件combox

控件combox目录 一 combox 显示二取数据三实例来自 CODE 的代码片 TestControle 一 combox 显示 nbsp nbsp 首先 combox 有两个属性来存储数据 DisplayMembe 显示成员 ValueMember 值成员 DisplayMembe 是我们在 combox 界面上看到的 ValueMember 是隐藏的数据 一般来说我


一. combox显示

    首先combox有两个属性来存储数据:DisplayMember(显示成员),ValueMember(值成员) ,DisplayMember是我们在combox界面上看到的,ValueMember是隐藏的数据。一般来说我们只需要设置DisplayMember属性的值即可。
  1. 循环赋值 ,通过combox.Items.Add方法
  2. 绑定数据,给combox.DataSource绑定数据源
两者的区别在于:
循环赋值代码没有绑定数据代码简练;

循环赋值方法combox默认没有选择值即 selectedIndex=-1,而绑定数据方式则默认是第一个数据。



注意:combox.DataSource数据源不一定,只要是集合数据即可(该集合类型必须继承自IList或IListSource)

二. 取数据

1. SelectedValue,SelectedItem,SelectedText,Text区别
combox取得值类型很多,基本有以上几种,这里讲下他们的区别,及用法
SelectedValue:选中的数据值;即ValueMember属性中存储的值。
SelectedItem:combox当前选中项的值;(如果设置了displayMember,与valueMember的值,则会显示着两个的集合)
SelectedText:鼠标选中的combox中显示值
Text:当前combox的值;可用来取combox的值。


注意:前三个值都是当combox选中某个值才有效,如果combox没有选中任何一个值,但是在程序中取得这些值为null,使用会报异常错误。(未实例化)而Text则是为空(“”)。


三.实例

1. UI:
控件combox


2. 说明
groupbox1:给combox赋值。分别采用循环,绑定数据库获取值赋给DataTable,绑定Dictionary值类型
groupbox2:取combox值,这里选用的第三个combox DT绑定。分别查看combox各个属性的值
注意:这里只写取这些属性值,是为了区分他们的不同


3. 代码:
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98
              
using MySql.Data.MySqlClient ;
private void Form1_Load ( object sender , EventArgs e )
{
//循环绑定
SetCmbWithCycle ();
//绑定数据库
SetCmbWithBindingDB ();
//绑定dictionary
SetCmbWithDT ();
}
///
/// 动态获取值
///
///
///
private void timer1_Tick ( object sender , EventArgs e )
{
if ( cmbDT . SelectedIndex < 0 )
{
lblError . Text = "combox没有选择值!" ;
return ;
}
//获取combox值
GetComboxData ();
}
///
/// 通过循环来赋值
///
private void SetCmbWithCycle ()
{
DataTable dt = GetDbData ();
for ( int i = 0 ; i < dt . Rows . Count ; i ++)
{
cmbItem . Items . Add ( dt . Rows [ i ][ "Name" ]);
}
}
///
/// 通过绑定方式来赋值
///
private void SetCmbWithBindingDB ()
{
DataTable dt = GetDbData ();
cmbBind . DataSource = dt ;
cmbBind . DisplayMember = "Name" ;
}
///
/// 通过dictiona绑定
///
private void SetCmbWithDT ()
{
Dictionary < int , string > dt = new Dictionary < int , string >();
dt . Add ( 1 , "A" );
dt . Add ( 2 , "B" );
BindingSource bs = new BindingSource ();
bs . DataSource = dt ;
//Dictionary类型数据不可直接绑定到控件上
cmbDT . DataSource = bs ;
cmbDT . ValueMember = "Key" ;
cmbDT . DisplayMember = "Value" ;
}
///
/// 获取combox的属性值
///
private void GetComboxData ()
{
lblSelVal . Text = cmbDT . SelectedValue . ToString ();
lblSelItem . Text = cmbDT . SelectedItem . ToString ();
lblSelTxt . Text = cmbDT . SelectedText ;
lblTxt . Text = cmbDT . Text ;
}
///
/// 数据库中获取数据
///
///
private DataTable GetDbData ()
{
string connStr = @"Server=localhost;Database=stu;Uid=root;Pwd=" ;
MySqlConnection conn = new MySqlConnection ( connStr );
string sql = @"Select *from user" ;
if ( conn . State == ConnectionState . Open )
{
conn . Close ();
}
conn . Open ();
MySqlCommand cmb = new MySqlCommand ( sql , conn );
MySqlDataAdapter da = new MySqlDataAdapter ( cmb );
DataTable dt = new DataTable ();
da . Fill ( dt );
conn . Close ();
return dt ;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222302.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:06
下一篇 2026年3月17日 下午4:06


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号