zoukankan      html  css  js  c++  java
  • Hashtable combox绑定数据

    ///最近做数据绑定,因为数据不是从数据库读取出来的,都是些不规范的数据 
    ///所以绑定数据的时候出问题了,发现在WinForm 中 Hashtable不能直接绑定combox下拉框 !   
    ///后来转换了一下,还算通过了,所以贴出来跟大家分享一下。 
    /// 
    /// 另外,再罗嗦一点,我发现comBox绑定数据源后,不能直接修改 它的item 项, 
    /// 否则也会报错,要是你的下拉列表的元素不固定,或同时来自两个以上不同的数据源 , 
    /// 则最好是一个一个的Item.Add()进去,不要用DataSource ,这样 你方便随时一个一个地Clear掉它的Item 。 
    /// 
    ///先创建一个WinForm应用程序,然后将默认的Form1和Program都删掉,再创建下面这个类就行了,下面的代码拷贝上去. 
    using System.Windows.Forms; 
    namespace Jianbing.ComboxBindingHashTable 

        public class Form1 : System.Windows.Forms.Form 
        { 
            //先制造出一个Hashtable,你可以从其他地方获取数据 
            private System.Collections.Hashtable myHash = null; 
            //用于转换后绑定下拉列表 
            private System.Collections.ArrayList list = new System.Collections.ArrayList( ); 
            public Form1( ) 
            { 
                InitializeComponent( ); 
            } 
            /// <summary> 
            /// 必需的设计器变量。 
            /// </summary> 
            private System.ComponentModel.IContainer components = null; 
            /// <summary> 
            /// 清理所有正在使用的资源。 
            /// </summary> 
            /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> 
            protected override void Dispose( bool disposing ) 
            { 
                if ( disposing && (components != null) ) 
                { 
                    components.Dispose( ); 
                } 
                base.Dispose( disposing ); 
            } 
            #region Windows 窗体设计器生成的代码 
            /// <summary> 
            /// 设计器支持所需的方法 - 不要 
            /// 使用代码编辑器修改此方法的内容。 
            /// </summary> 
            private void InitializeComponent( ) 
            { 
                this.comboBox1 = new System.Windows.Forms.ComboBox( ); 
                this.SuspendLayout( ); 
                // 
                // comboBox1 
                // 
                this.comboBox1.FormattingEnabled = true; 
                this.comboBox1.Location = new System.Drawing.Point( 66 , 82 ); 
                this.comboBox1.Name = "comboBox1"; 
                this.comboBox1.Size = new System.Drawing.Size( 272 , 20 ); 
                this.comboBox1.TabIndex = 0; 
                // 
                // Form1 
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF( 6F , 12F ); 
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
                this.ClientSize = new System.Drawing.Size( 379 , 276 ); 
                this.Controls.Add( this.comboBox1 ); 
                this.Name = "Form1"; 
                this.Text = "Form1"; 
                this.Load += new System.EventHandler( this.Form1_Load ); 
                this.ResumeLayout( false ); 
            } 
            #endregion 
            private System.Windows.Forms.ComboBox comboBox1; 
            /// <summary> 
            /// 应用程序的主入口点。 
            /// </summary> 
            [System.STAThread] 
            static void Main( ) 
            { 
                Application.EnableVisualStyles( ); 
                Application.SetCompatibleTextRenderingDefault( false ); 
                Application.Run( new Form1( ) ); 
            } 
            private void Form1_Load( object sender , System.EventArgs e ) 
            { 
               cmbBoxBinding( ); 
            } 
            //绑定 
            private void cmbBoxBinding( ) 
            { 
                if ( myHash == null ) 
                { 
                    myHash = new System.Collections.Hashtable( ); 
                    myHash.Add( "JIANBING" , "我是中国人1" ); 
                    myHash.Add( "CH" , "我爱我的祖国2" ); 
                    myHash.Add( "U" , "你是傻大木3" ); 
                    myHash.Add( "M" , "我想找个MM谈恋爱4" ); 
                    myHash.Add( "MM" , "因为我想有人疼爱我5" ); 
                    myHash.Add( "MI" , "我想要个真心对我好的的女孩6" ); 
                } 
                foreach ( System.Collections.DictionaryEntry entry in myHash ) 
                    list.Add( entry ); 
                //绑定这该死的 下拉列表 
                comboBox1.DataSource = list; 
                comboBox1.DisplayMember = "Value"; 
                comboBox1.ValueMember = "Key"; 
            } 
        } 

    ///运行完后不知道大家发现没有,我本来想让它按我绑定的顺序显示的, 
    ///即出现的顺序应该是“我是中国人”、"我爱我的祖国"、"你是傻大木"、 "我想谈恋爱了"…… 
    ///但不是这样子,因为Hashtable中的元素是按照里面元素的  哈稀码来排序的,所以出来的结果不是我 
    ///想要的。在ArrayList中是按添加元素的先后来出现,问题出在foreach 循环处 !! 
    ///把 cmbBoxBinding() 这个方法改一下:将下面代码拷贝上去替换原来的那个cmbBoxBinding() 
    ///去掉Hashtable 对象,照样是hashTable的形式,嘿嘿 !~ 
         //private void cmbBoxBinding() 
         //   { 
         //       list.Add( new System.Collections.DictionaryEntry( "JIANBING" , "我是中国人1" ) ); 
         //       list.Add( new System.Collections.DictionaryEntry( "CH" , "我爱我的祖国2" ) ); 
         //       list.Add( new System.Collections.DictionaryEntry( "U" , "你是傻大木3" ) ); 
         //       list.Add( new System.Collections.DictionaryEntry( "M" , "我想找个MM谈恋爱4" ) ); 
         //       list.Add( new System.Collections.DictionaryEntry( "MM" , "因为我想有人疼爱我5"  ) ); 
         //       list.Add( new System.Collections.DictionaryEntry( "MI" , "我想要个真心对我好的的女孩6" ) ); 
         //       //绑定  下拉列表 
         //       comboBox1.DataSource = list; 
         //       comboBox1.DisplayMember = "Value"; 
         //       comboBox1.ValueMember = "Key"; 
         //   }

  • 相关阅读:
    [ SSH框架 ] Hibernate框架学习之三
    [ Java学习基础 ] Java的对象容器 -- 集合
    [ Java学习基础 ] Java异常处理
    [ SSH框架 ] Hibernate框架学习之二
    [ Java学习基础 ] Java的抽象类与接口
    [ SSH框架 ] Hibernate框架学习之一
    [ Java学习基础 ] Java的继承与多态
    07 saltstack生产实例-mysql主从
    02 Vue介绍与安装,指令系统 v-*、音乐播放器
    01- ES6、jquery源码、node、webpack
  • 原文地址:https://www.cnblogs.com/dodui/p/2408191.html
Copyright © 2011-2022 走看看