1. 程式人生 > >ComboBox控制元件的資料繫結

ComboBox控制元件的資料繫結

      ComboBox控制元件是一個下拉組合控制元件,該控制元件可以讓使用者輸入或下拉選擇內容。在使用的時候經常只是繫結資料表中的其中一列或把其中一列的值新增到Items中,如:name 。但在查詢或使用的時候有可能需要name 所對應的ID,然而這時朋友們可能還要再用一條查詢語句將name對應的ID取出來。下面我說一下我的做法提供大家參考一下。

  首先新建一個windows專案,然後將ComboBox控制元件拖放到Form1中取名comboBox1.

下面是Form1類中的程式碼:

方法1:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace C15Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

                 InitComboBox(comboBox1);

         }

          private void InitComboBox(ComboBox combobox)
        {
            combobox.DrawMode = DrawMode.Normal;//設定繪製方式
            combobox.DropDownHeight = 60;
            combobox.DropDownStyle = ComboBoxStyle.DropDown;
            combobox.FlatStyle = FlatStyle.Flat; //設定外觀
            /*一般應用
            combobox.Items.Add("hello");
            combobox.Items.Add("word");
            */
           資料繫結方式
            DataTable sourcettable = new DataTable();
            sourcettable.Columns.Add("ID");
            sourcettable.Columns.Add("Code");
            sourcettable.Columns.Add("Name");
            sourcettable.Columns.Add("Telephone");
            sourcettable.Columns.Add("Address");
            DataRow dr1 = sourcettable.NewRow ();
            dr1["ID"] = "1";
            dr1["Code"] = "001";
            dr1["Name"] = "張三";
            dr1["Telephone"] = "12345";
            dr1["Address"] = "中國廣東*******";
            sourcettable.Rows.Add(dr1);
            DataRow dr2 = sourcettable.NewRow ();
            dr2["ID"] = "2";
            dr2["Code"] = "002";
            dr2["Name"] = "李四";
            dr2["Telephone"] = "123456";
            dr2["Address"] = "中國北京*******";
            sourcettable.Rows.Add(dr2);
            combobox.DataSource = sourcettable;//設定資料來源
            combobox.DisplayMember = "Name";//設定顯示列
            combobox.ValueMember = "ID";//設定實際值
            combobox.SelectedIndexChanged += new EventHandler(combobox_SelectedIndexChanged);
           
        }

        void combobox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox combobox = sender as ComboBox;
            if (combobox != null)
            {
                MessageBox.Show(combobox.SelectedValue.ToString());
            }
        }

}

方法2:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace C15Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

                 InitComboBox(comboBox1);

         }

          private void InitComboBox(ComboBox combobox)
        {
            combobox.DrawMode = DrawMode.Normal;//設定繪製方式
            combobox.DropDownHeight = 60;
            combobox.DropDownStyle = ComboBoxStyle.DropDown;
            combobox.FlatStyle = FlatStyle.Flat; //設定外觀
            /*一般應用
            combobox.Items.Add("hello");
            combobox.Items.Add("word");
            */
            //特殊應用
           
            Employee employee1 = new Employee();
            employee1.ID = "1";
            employee1.Code = "001";
            employee1.Name = "張三";
            employee1.Telephone = "022123456";
            employee1.Address = "中國天津××××";
            Employee employee2 = new Employee();
            employee2.ID = "2";
            employee2.Code = "002";
            employee2.Name = "李四";
            employee2.Telephone = "010123456";
            employee2.Address = "中國北京*******";

            //將Employee物件新增到combobox控制元件中
            combobox.Items.Add(employee1);
            combobox.Items.Add (employee2 );

           //將combobox控制元件的selectedindexchanged 事件拖管到combobox_SelectedIndexChanged事件中
            combobox.SelectedIndexChanged += new EventHandler(combobox_SelectedIndexChanged);
           
          }

          //當控制元件選擇的項發生變化時執行程式碼

        void combobox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox combobox = sender as ComboBox;
            if (combobox != null)
            {
                Employee employee = (Employee)combobox.SelectedItem;//獲取當前選中項
                if (employee != null)
                {
                    MessageBox.Show(string.Format("ID:{0},Code:{1},Name:{2},Telephone:{3},Address:{4}", employee.ID, employee.Code, employee.Name, employee.Telephone, employee.Address));
                }
            }
        }

}