Windows Form -----内容(2)
下拉列表(ComboBox):
(一).如何把選項放進去。
--手動放:不常用。
使用代碼放:
(1).使用代碼逐項添加
a.造一個實體類:重寫父類的ToString()方法,返回要顯示的屬性。
b.使用實體造對象
c.把對象添加到下拉列表的items集合中去。
案例:把民族表中的數據讀取出來加載到下拉列表中去。
a.準備實體類、鏈接類、數據訪問類。
b.在界面后臺代碼中,調用數據訪問類,獲取返回來的民族列表數據。
c.遍歷列表中的每一項,把它每個加進下拉列表的Items集合中。
(2).直接使用數據綁定
需要用到的屬性:
DataSource - 下拉列表的數據來源,一般是實體類的集合。
DisplayMember - 要作為顯示項的屬性名。
ValueMember - 要作為值項的屬性名。
案例:把民族表中的數據讀取出來加載到下拉列表中去。
a.準備實體類、鏈接類、數據訪問類。
b.調用數據訪問類,把返回來的數據,賦給下拉列表的DataSource
c.設置下拉列表的DisplayMember和ValueMember屬性。
?案例:如何為下拉列表中加上“請選擇”的項
(1).使用代碼逐項添加
只需在逐項添加的代碼之前,加上一個“請選擇”的項即可
?Nation da = new Nation("-9","==請選擇==");
??????????? comboBox1.Items.Add(da);
??????????? List<Nation> list = new NationDA().Select();
??????????? foreach (Nation data in list)
??????????? {
?????????????? comboBox1.Items.Add(data);
??????????? }
(2).直接使用數據綁定
需要事選在數據源(即列表集合)中添加一個“請選擇”的項。綁定即可上去。
?List<Nation> list = new NationDA().Select();
??????????? //list.Add(new Nation("-9","==請選擇=="));//add()是加在末尾
??????????? list.Insert(0, new Nation("-9", "==請選擇=="));//insert(0,"")加在開頭
??????????? comboBox1.DataSource = list;
??????????? comboBox1.DisplayMember = "Name";
??????????? comboBox1.ValueMember = "Code";
(二).如何把選中項獲取出來。
相關屬性:SelectedItem--當前選中的項
使用下拉列表的SelectedItem屬性來獲取,獲取出來的類型是Object,需要強制轉換成相應的類型。然后再獲得某相應屬性的值。
?案例:獲取選中的民族的名稱和Code值出來。
label1.Text=((Nation)comboBox1.SelectedItem).Name;
label1.Text = ((Nation)comboBox1.SelectedItem).Code;
?//建議用下面的這種
label1.Text = (comboBox1.SelectedItem as Nation).Name;
label1.Text += (comboBox1.SelectedItem as Nation).Code;
(三).如何設置某一項為選中項。
遍歷下拉列表中的每一項,找到與要設置為選中項的值一樣的那一樣,然后把這個對象賦給SelectedItem
?案例:設置下拉列表中選中項與文本框中輸入的代號一致。
方法1:
string code = textBox1.Text;
??????????? //遍歷下拉列表中的每一項,找到對應的項,設為選中狀態
??????????? foreach (Nation data in comboBox1.Items)
??????????? {
??????????????? if (data.Code==code)
??????????????? {
??????????????????? comboBox1.SelectedItem = data;
??????????????? }
??????????? }
方法2:
?string code = textBox1.Text;
??????????? for (int i = 0; i < comboBox1.Items.Count; i++)
??????????? {
??????????????? Nation data = comboBox1.Items[i] as Nation;
??????????????? if (data.Code==code)
??????????????? {
??????????????????? comboBox1.SelectedIndex = i;
??????????????? }
??????????? }
(四).其它屬性
DropDownStyle - DropDown--既可以選,又可以填寫。DropDownList--只能選
相關代碼:
//連接類
?class DBconnection
??? {
??????? public const string CONNECTIONSTRING = "server=.;database=mydb;uid=sa;pwd=5587725";
??? }
//實體類
class Nation
??? {
??????? //構造函數
??????? public Nation(string code, string name)
??????? {
??????????? _Name = name;
??????????? _Code = code;
??????? }
??????? private string _Code;
??????? public string Code
??????? {
??????????? get { return _Code; }
??????????? set { _Code = value; }
??????? }
??????? private string _Name;
??????? public string Name
??????? {
??????????? get { return _Name; }
??????????? set { _Name = value; }
??????? }
??????? public override string ToString()
??????? {
??????????? return Name;
??????? }
??? }
//數據訪問類
class NationDA
??? {
??????? private SqlConnection _Conn;
??????? private SqlCommand _Cmd;
??????? private SqlDataReader _DR;
??????? public NationDA()
??????? {
??????????? _Conn = new SqlConnection(DBconnection.CONNECTIONSTRING);
??????????? _Cmd = _Conn.CreateCommand();
??????? }
??????? public List<Nation> Select()
??????? {
??????????? List<Nation> list = new List<Nation>();
??????????? _Cmd.CommandText = "select * from Nation";
??????????? try
??????????? {
??????????????? _Conn.Open();
??????????????? _DR = _Cmd.ExecuteReader();
??????????????? while (_DR.Read())
??????????????? {
??????????????????? Nation data = new Nation(_DR["Code"].ToString(),_DR["Name"].ToString());
????????????????? ?
??????????????????? list.Add(data);
??????????????? }
??????????? }
??????????? finally
??????????? {
??????????????? _Conn.Close();
??????????? }
??????????? return list;
??????? }
??????? public Nation Select(string code)
??????? {
??????????? _Cmd.CommandText = "select * from Nation where Code=@code";
??????????? _Cmd.Parameters.Clear();
??????????? _Cmd.Parameters.AddWithValue("@code",code);
??????????? _DR = _Cmd.ExecuteReader();
??????????? try
??????????? {
??????????????? _Conn.Open();
??????????????? if (_DR.Read())
??????????????? {
??????????????????? Nation data = new Nation(_DR["Code"].ToString(), _DR["Name"].ToString());
???????????????? ?
??????????????????? return data;
??????????????? }
??????????????? else
??????????????? {
??????????????????? return null;
??????????????? }
??????????? }
??????????? finally
??????????? {
??????????????? _Conn.Close();
??????????? }
???????? ?
??????? }
??? }
//FORM類
?private void Form2_Load(object sender, EventArgs e)
??????? {
??????????? //添加下拉列表
??????????? //comboBox1.Items.Add("");
??????????? //第一種方法:使用代碼逐項添加
??????????? //如何為下拉列表中加上“請選擇”的項
??????????? Nation da = new Nation("-9", "==請選擇==");
??????????? comboBox1.Items.Add(da);
??????????? List<Nation> list = new NationDA().Select();
??????????? foreach (Nation data in list)
??????????? {
??????????????? comboBox1.Items.Add(data);
??????????? }
??????????? comboBox1.SelectedIndex=0;//默認選擇第幾項
??????????? //第二種方法:直接使用數據綁定
???????????? //調用數據訪問類,把返回來的數據,賦給下拉列表的DataSource.
??????????? //comboBox1.DataSource = new NationDA().Select();
??????????? //設置下拉列表的DisplayMember(顯示屬性)和ValueMember(values值)屬性。
??????????? //comboBox1.DisplayMember = "Name";
??????????? //comboBox1.ValueMember = "Code";
??????????? //如何為下拉列表中加上“請選擇”的項
??????????? //List<Nation> list = new NationDA().Select();
??????????? //list.Add(new Nation("-9","==請選擇=="));//add()是加在末尾
??????????? //list.Insert(0, new Nation("-9", "==請選擇=="));//insert(0,"")加在開頭
??????????? //comboBox1.DataSource = list;
??????????? //comboBox1.DisplayMember = "Name";
??????????? //comboBox1.ValueMember = "Code";
??????? }
??????? private void button1_Click(object sender, EventArgs e)
??????? {
??????????? //label1.Text=((Nation)comboBox1.SelectedItem).Name;
??????????? //label1.Text += ((Nation)comboBox1.SelectedItem).Code;
??????????? //建議用下面的這種
??????????? label1.Text = (comboBox1.SelectedItem as Nation).Name;
??????????? label1.Text += (comboBox1.SelectedItem as Nation).Code;
??????? }
??????? private void button2_Click(object sender, EventArgs e)
??????? {
??????????? string code = textBox1.Text;
??????????? for (int i = 0; i < comboBox1.Items.Count; i++)
??????????? {
??????????????? Nation data = comboBox1.Items[i] as Nation;
??????????????? if (data.Code==code)
??????????????? {
??????????????????? comboBox1.SelectedIndex = i;
??????????????? }
??????????? }
??????????? 遍歷下拉列表中的每一項,找到對應的項,設為選中狀態
??????????? //foreach (Nation data in comboBox1.Items)
??????????? //{
??????????? //??? if (data.Code==code)
??????????? //??? {
??????????? //??????? comboBox1.SelectedItem = data;
??????????? //??? }
??????????? //}
??????? }
?
轉載于:https://www.cnblogs.com/likaixuan/p/4500076.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Windows Form -----内容(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第12章 与Spring集成
- 下一篇: 3.13. Notepad++中Wind