zoukankan      html  css  js  c++  java
  • Combobox 小结

    首先声明,我这篇小结的数据源为 DataTable (IListSource数据源),文章内容很浅显,仅为个人或者初学者使用,。

    如果各位大牛有补充的,小弟感激不进!~~~

    首先,看几个属性:

      SelectedIndex 已重写。获取或设置指定当前选定项的索引。
      SelectedItem 获取或设置 ComboBox 中当前选定的项。
      SelectedText 获取或设置 ComboBox 的可编辑部分中选定的文本。
      SelectedValue  获取或设置由 ValueMember 属性指定的成员属性的值。(从 ListControl 继承。)
      SelectionLength 获取或设置组合框可编辑部分中选定的字符数。
      SelectionStart 获取或设置组合框中选定文本的起始索引。
       Text         已重写。获取或设置与此控件关联的文本。

    文章主要是在这几个属性上面做文章。

    1.首先为ComboBox绑定数据源DataTable.

    1 DataSet ds = new WMS.BLL.B_BasicParaBLL().GetAllList();
    2 comboBox1.DisplayMember = "ParaName";
    3 comboBox1.ValueMember = "ParaId";
    4 comboBox1.DataSource = ds.Tables[0];

    2.数据库结构:

    /****** 对象:  Table [dbo].[B_BasicPara]    脚本日期: 12/13/2010 16:34:56 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[B_BasicPara](
    	[ParaId] [int] IDENTITY(1,1) NOT NULL,
    	[ParaName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
    	[ParaValue] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
    	[IsValid] [bit] NULL CONSTRAINT [DF_B_BasicPara_IsValid]  DEFAULT (1),
     CONSTRAINT [PK_B_BasicPara] PRIMARY KEY CLUSTERED 
    (
    	[ParaId] ASC
    ) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'参数编号' ,@level0type=N'USER', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'B_BasicPara', @level2type=N'COLUMN', @level2name=N'ParaId'
    
    GO
    EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'参数名称' ,@level0type=N'USER', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'B_BasicPara', @level2type=N'COLUMN', @level2name=N'ParaName'
    
    GO
    EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'参数内容' ,@level0type=N'USER', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'B_BasicPara', @level2type=N'COLUMN', @level2name=N'ParaValue'
    
    GO
    EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'是否可用' ,@level0type=N'USER', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'B_BasicPara', @level2type=N'COLUMN', @level2name=N'IsValid'
    
    

    数据,自己填充。。。

    3.确定ComboBox中每一行的对象是到底是什么类型。

    Debug.WriteLine("Item Type:" + comboBox1.SelectedItem.GetType());
    

    或者

    Debug.WriteLine("Item Type:" + comboBox1.SelectedItem.ToString());
    

    4.现在可以看看自己所选对象的内容了。

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Debug.WriteLine("");
        Debug.WriteLine("=========================================");
        Debug.WriteLine("SelectedIndex:"+comboBox1.SelectedIndex);
        Debug.WriteLine("SelectedText:"+comboBox1.SelectedText);
        Debug.WriteLine("SelectedValue:"+comboBox1.SelectedValue.ToString());
        Debug.WriteLine("Text:"+comboBox1.Text);
        Debug.WriteLine("ItemType:"+comboBox1.SelectedItem.GetType());
        DataRowViewdrv=comboBox1.SelectedItemasDataRowView;
        Debug.WriteLine("ItemsCount:"+drv.Row.ItemArray.Length);
        Debug.WriteLine(string.Format("ItemsData:0:{0}1:{1}2:{2}e:{3}",drv.Row[0],drv.Row[1],drv.Row[2],drv.Row[3]));
    }
    

    有没有发现,不管你选择哪一项,comboBox1.SelectedText 的值永远都是空?

    5.马上给出原因

      还记得这SelectionStart 和 SelectionLength这两个属性吧。。。?

      这两个属性是用来操作ComboBox中选中的文本的,第一个是起始位置,第二个是选中的长度。

      给出代码:

    comboBox1.SelectionStart = 0;
    comboBox1.SelectionLength = comboBox1.Text.Length;
    

    在执行

    Debug.WriteLine("SelectedText:"+comboBox1.SelectedText);
    

    之前先执行这两条语句,SelectedText就有值了(之前郁闷了快半小时,没有经验啊。。。)

    6.给ComboBox赋值

    利用

    comboBox1.Text
    comboBox1.SelectedValue
    comboBox1.SelectedItem
    

    这三个属性来改变ComboBox选择的项。

    Text:根据本文中用到的数据库,只赋ParaName的值就可定位到你需要选择的项

    SelectedValue:根据本文中用到的数据库,只赋ParaId的值就可定位到你需要选择的项

    SelectedItem:由于我暂时没有找到如何把DataRow类型转换成DataRowView类型,故此功能无法测试。(我提供个方案,自己写个ListItem类,有两个属性value,text,重载toString方法,输出Text值。然后添加许多listItem进ComboBox,这样可以通过ListItem定位到要选择的项了)

    为什么不用SelectedText?

    如果给SelectedText赋值,它其实是ComboBox.Text = SelectedText+ComboBox.Text, 并且没有选择的效果。这个属性有点迷惑人,其实就是TextBox的SelectedText属性。

    7.小结一下。。。。。

    之前用ComboBox总是提心吊胆,每次用都要上网查下这东西是怎么回事~~~这次做了个小小的试验,明白了它的一些属性是咋回事~~~嘘。。。。。

    8.欢迎各位大牛指正和补充~~~

  • 相关阅读:
    POJ 3695 Rectangles
    POJ 2002 Squares
    linux 查看磁盘空间大小
    keymaster 快捷键管理器
    Pxloader
    as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍
    javascript的dom选择器
    javascript音频管理方案:SoundManager2
    Morris.js – 画折线图、面积图和环状图的统计图表库
    jsuri 让你方便的处理url
  • 原文地址:https://www.cnblogs.com/lscy/p/1904746.html
Copyright © 2011-2022 走看看