1.單選按鈕(RadioButton)前端
同一組中其餘單選按鈕不能同時選定node
分組形式:panel GoupBox 窗體算法
方法:sql
屬性數據庫 |
說明windows |
Appearance數組 |
RadioButton 控件的顯示與命令按鈕類似緩存 |
Checkedapp |
肯定是否已選定控件ide |
方法 |
說明 |
Focus |
將輸入焦點移至控件 |
實現的界面
1 private void button1_Click(object sender, EventArgs e) 2 { 3 if (radioButton1.Checked) 4 { 5 MessageBox.Show("第一個"); 6 } 7 else if (radioButton2.Checked) 8 { 9 MessageBox.Show("第二個"); 10 } 11 else if (radioButton3.Checked) 12 { 13 MessageBox.Show("第三個"); 14 } 15 else if (radioButton4.Checked) 16 { 17 MessageBox.Show("第四 個"); 18 } 19 20 }
2.圖片框 pictureBox
功能:用於顯示圖片
屬性
屬性 |
說明 |
Image |
用於指定圖片框顯示的圖像。該圖像可在設計或運行時設置 |
SizeMode |
用於指定圖像的顯示方式。能夠指定的各類大小模式包括 AutoSize、CenterImage、Normal 和 StretchImage。默認值爲 Normal |
方法 |
說明 |
Show Click |
顯示控件 事件 |
1 public Form1() 2 { 3 InitializeComponent(); 4 showpic(); 5 } 6 public void showpic() 7 { 8 //個人文檔 文件夾下的圖片 9 pictureBox1.Image = Image.FromFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\image.gif"); 10 11 //指定顯示屬性 12 pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 13 } 14 private void pictureBox1_Click(object sender, EventArgs e) 15 { 16 if (pictureBox1.Image != null) 17 { 18 pictureBox1.Image.Dispose(); 19 pictureBox1.Image = null; 20 } 21 else 22 { 23 //上述有法子 24 showpic(); 25 } 26 }
3.選項卡控件(tabControl)
在 Windows 應用程序中,選項卡用於將相關的控件集中在一塊兒,放在一個頁面中
選項卡控件用於顯示多個選項卡,其中每一個選項卡都可包含圖片和其餘控件
選項卡至關於另外一個窗體,能夠容納其餘控件
基本屬性
屬性 |
說明 |
MultiLine |
指定是否能夠顯示多行選項卡。若是能夠顯示多行選項卡,該值應爲 True,不然爲 False。默認值爲 False |
SelectedIndex |
當前所選選項卡頁的索引值。該屬性的值爲當前所選選項卡頁的基於 0 的索引。默認值爲 -1,若是未選定選項卡頁,則爲同一值 |
SelectedTab |
當前選定的選項卡頁。若是未選定選項卡頁,則值爲 NULL 引用 |
ShowToolTips |
指定在鼠標移至選項卡時,是否應顯示該選項卡的工具提示。 若是對帶有工具提示的選項卡顯示工具提示,該值應爲 True,不然爲 False 【同時必須設置某頁的ToolTipText內容 】************************(工具提示) |
TabCount |
檢索選項卡控件中選項卡的數目 |
SelectedIndexChanged |
更改 SelectedIndex 屬性值時,將觸發該事件 |
|
|
Alignment |
控制標籤在標籤控件的什麼位置顯示。默認的位置爲控件的頂部 |
Appearance |
控制標籤的顯示方式。標籤能夠顯示爲通常的按鈕或帶有平面樣式 |
HotTrack |
若是這個屬性設置爲true,則當鼠標指針滑過控件上的標籤時,其外觀就會改變 |
Multiline |
若是這個屬性設置爲true,就能夠有幾行標籤 |
RowCount |
返回當前顯示的標籤行數 |
SelectedIndex |
返回或設置選中標籤的索引 |
TabPages |
這是控件中的TabPage對象集合。使用這個集合能夠添加和刪除TabPage對象 |
TabCount |
返回標籤的總數 |
SelectedTab |
返回或設置選中的標籤。注意這個屬性在TabPages的實例上使用 |
eg:
執行效果
1 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 label1.Text = "當前操做統計信息爲:頁面爲第" + this.tabControl1.SelectedIndex.ToString() + "頁,選項卡頁爲" + tabControl1.SelectedTab.Text + ",共有頁數" + tabControl1.TabCount.ToString(); 4 }
選項卡 上一頁和下一頁
1 private void button1_Click(object sender, EventArgs e) 2 { 3 tabControl2.TabPages.Add(new TabPage("新建頁")); 4 } 5 6 private void button2_Click(object sender, EventArgs e) 7 { 8 tabControl2.TabPages.RemoveAt(tabControl2.SelectedIndex); 9 } 10 11 private void button3_Click(object sender, EventArgs e) 12 { 13 int i = tabControl2.SelectedIndex; 14 if (i-1 < 0) 15 { 16 MessageBox.Show("已經到頭"); 17 return; 18 } 19 else 20 { 21 tabControl2.SelectedIndex = i - 1; 22 } 23 } 24 25 private void button4_Click(object sender, EventArgs e) 26 { 27 int i = tabControl2.SelectedIndex; 28 if (i + 1 >= tabControl2.TabCount) 29 { 30 MessageBox.Show("已經到頭"); 31 return; 32 } 33 else 34 { 35 tabControl2.SelectedIndex = i + 1; 36 } 37 } 38 39 private void button6_Click(object sender, EventArgs e) 40 { 41 int i = tabControl2.SelectedIndex; 42 if (i + 1 >= tabControl2.TabCount) 43 { 44 MessageBox.Show("已經到頭"); 45 return; 46 } 47 else 48 { 49 TabPage selecttap = tabControl2.SelectedTab; 50 tabControl2.TabPages.Remove(selecttap);//先從集合之中移除 51 tabControl2.TabPages.Insert(i + 1, selecttap);//再添加進去 52 tabControl2.SelectedIndex = i + 1; 53 } 54 } 55 56 private void button5_Click(object sender, EventArgs e) 57 { 58 int i = tabControl2.SelectedIndex; 59 if (i -1 < 0) 60 { 61 MessageBox.Show("已經到頭"); 62 return; 63 } 64 else 65 { 66 TabPage selecttap = tabControl2.SelectedTab; 67 tabControl2.TabPages.Remove(selecttap);//先從集合之中移除 68 tabControl2.TabPages.Insert(i - 1, selecttap);//再添加進去 69 tabControl2.SelectedIndex = i - 1; 70 } 71 }
4進度條控件ProgressBar
用於指示操做的進度、完成的百分比
外觀是排列在水平條中的必定數目的矩形
屬性及其方法
屬性 |
說明 |
Maximum |
進度條控件的最大值。默認值爲 100 |
Minimum |
進度條控件的最小值。進度條從最小值開始遞增,直至達到最大值。默認值爲 0 |
Step |
PerformStep 方法應據以增長進度條的光標位置的值。 默認值爲 10 |
Value |
進度條控件中光標的當前位置。默認值爲 0 |
方法 |
說明 |
Increment |
按指定的遞增值移動進度條的光標位置 |
PerformStep |
按 Step 屬性中指定的值移動進度條的光標位置 |
eg
1 private void button1_Click(object sender, EventArgs e) 2 { 3 progressBar1.Maximum = 1000; 4 progressBar1.Minimum = 0; 5 progressBar1.Step = 1; 6 for (int i = 0; i <= 1000; i++) 7 { 8 progressBar1.PerformStep(); 9 } 10 }
進度條和鏈接數據庫的練習 讀取數據庫庫的條數
1 private void button1_Click(object sender, EventArgs e) 2 { 3 string sqlstring = "Data Source=(local);Initial Catalog=ccut;User ID=sa"; 4 SqlConnection conn = new SqlConnection(sqlstring); 5 string sql="select * from tbl_advice"; 6 SqlCommand cmd = new SqlCommand(sql, conn); 7 SqlDataAdapter adp = new SqlDataAdapter(); 8 adp.SelectCommand = cmd; 9 DataSet ds = new DataSet(); 10 adp.Fill(ds); 11 conn.Dispose(); 12 conn.Close(); 13 conn = null; 14 15 label1.Visible = true; 16 progressBar1.Visible = true; 17 progressBar1.Minimum = 0; 18 progressBar1.Maximum = ds.Tables[0].Rows.Count; 19 progressBar1.BackColor = Color.Red; 20 21 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 22 { 23 progressBar1.Value++; 24 Application.DoEvents(); 25 this.label1.Text = progressBar1.Value.ToString(); 26 } 27 }
5 .imageList 控件
ImageList 控件包含 ListImage 對象的集合,該集合中的每一個對象均可以經過其索引或關鍵字被引用。ImageList 控件不能獨立使用,只是做爲一個便於向其它控件提供圖象的資料中心。
語法
ImageList 控件的做用象圖像的儲藏室,同時,它須要第二個控件顯示所儲存的圖像。第二個控件能夠是任何能顯示圖像 Picture 對象的控件,也能夠是特別設計的、用於綁定 ImageList 控件的 Windows 通用控件之一。這些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。爲了與這些控件一同使用 ImageList,必須經過一個適當的屬性將特定的 ImageList控件綁定到第二個控件。對於 ListView 控件,必須設置其 Icons 和 SmallIcons 屬性爲 ImageList 控件。對於 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必須設置 ImageList 屬性爲 ImageList 控件。 在設計時,能夠用「ImageList 控件屬性」對話框的「圖像」選項卡來添加圖象。在運行時,能夠用 Add 方法給 ListImages 集合添加圖象。 對於 Windows 通用控件來講,設計時能夠用「自定義屬性」對話框來指定一個 ImageList。運行時也能夠用 ImageList 屬性指定一個 ImageList 控件,就象下面的例子所述的那樣,它能夠設置 TreeView 控件的: TreeView1.ImageList = ImageList1 '指定 ImageList 屬性
基本屬性和方法
屬性 |
說明 |
Images |
該屬性表示圖像列表中包含的圖像的集合******* |
ImageSize |
該屬性表示圖像的大小,默認高度和寬度爲 16 x 16,最大大小爲 256 x 256(特別注意) |
方法 |
說明 |
Draw |
該方法用於繪製指定圖像 |
實訓 添加ToolBar ---單擊ImageList 對象爲剛添加的列表 爲了toolBar 添加 5個按鈕(tootlBar 屬性buttons) 併爲每一個按鈕imageindex 配置ImageList 控件的圖片信息
6 ToolBar 控件
屬性和方法
屬性 |
說明 |
ImageIndex ShowToolTips |
爲工具欄按鈕指定的圖像在圖像列表中的索引值 true |
Parent |
指定工具欄按鈕所屬的 ToolBar 控件 |
Style |
工具欄按鈕的樣式,其中包括 DropDownButton(下拉按鈕)、Separator(分隔符) 和 ToggleButton(切換按鈕) |
ToolTipText |
表示工具欄按鈕的工具提示文本 |
ButtonClick 單擊工具欄按鈕觸發的事件
加載imageList 控件圖片
1 private void tbrToolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) 2 { 3 if(e.Button == this.tbrToolBar.Buttons[0]) 4 { 5 MessageBox.Show(「已單擊 「打開」按鈕"); 6 } 7 }
窗體加載
{
ToolBarButton bt1=new ToolBarButton();
toolBar1.Buttons.Add(bt1);
toolBar1.ImageList=imageList1;
toolBar1.ShowToolTips=True;
bt1.ImageIndex=0;
tb1.Text="ccut1";
bt1.ToolTipText="ccut 偉大";
}
7 StatusStrip 出如今window 窗體的底部
通常使用文本和圖片 向用戶顯示程序當前的狀態
容許添加控件有 StatuesLabel ,ProgressBar,DropDownButton,SpliButton
eg.
計時器 顯示當前時間的
1 private void timer1_Tick(object sender, EventArgs e) 2 { this.toolStripStatusLabel3.Text = "系統當前時間:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } 3 在Form的Load事件中 對timer1進行相關設置 4 private void MainForm_Load(object sender, EventArgs e) 5 { 6 this.toolStripStatusLabel3.Text = "系統當前時間:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); this.timer1.Interval=1000; this.timer1.Start(); 7 }
鏈接數據庫,通統計數據 條數 進度條
1 private void button1_Click(object sender, EventArgs e) 2 { 3 toolStripProgressBar1.Value = 0; 4 string sqlstring = "Data Source=(local);Initial Catalog=zrzx;User ID=sa"; 5 SqlConnection conn = new SqlConnection(sqlstring); 6 string sql = "select * from tbl_advice"; 7 SqlCommand cmd = new SqlCommand(sql, conn); 8 SqlDataAdapter adp = new SqlDataAdapter(); 9 adp.SelectCommand = cmd; 10 DataSet ds = new DataSet(); 11 adp.Fill(ds); 12 conn.Dispose(); 13 conn.Close(); 14 conn = null; 15 16 toolStripProgressBar1.Minimum = 0; 17 toolStripProgressBar1.Maximum = ds.Tables[0].Rows.Count; 18 19 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 20 { 21 toolStripProgressBar1.Value++; 22 Application.DoEvents(); 23 } 24 25 }
richTextBox1.Text.Length
8.timer 不向用戶提交用戶界面
可在規定時間內執行某個事件
屬性和方法
按照某個週期觸發事件
Timer 控件爲開發人員提供了一種在通過指定的時間間隔或到達指定的絕對時間時根據代碼進行響應的方式
Enabled 首先設置 |
Interval時間間隔毫秒數 |
Start() 時鐘啓動 |
Stop() 時鐘中止 |
1 private void button1_Click(object sender, EventArgs e) 2 { 3 timer1.Start(); 4 } 5 6 private void button2_Click(object sender, EventArgs e) 7 { 8 timer1.Stop(); 9 } 10 11 private void timer1_Tick(object sender, EventArgs e) 12 { 13 pictureBox1.Left -= 5; 14 if (pictureBox1.Right < 0) 15 { 16 pictureBox1.Left = Width; 17 } 18 }
1 public partial class Form2 : Form 2 { 3 public Form2() 4 { 5 InitializeComponent(); 6 7 } 8 9 private int compuTime; 10 private void timer1_Tick(object sender, EventArgs e) 11 { 12 13 long curTickValue = Environment.TickCount; 14 long difference = curTickValue - compuTime; 15 long computerHours, computerMinutes, computerSeconds; 16 long applicationHours, applicationMinutes, applicationSeconds; 17 //將毫秒轉換成小時、分鐘和秒 18 computerHours = (curTickValue / (3600 * 999)) % 24; 19 computerHours = (curTickValue / (3600 * 999)) % 24; 20 computerMinutes = (curTickValue / (60 * 999)) % 60; 21 computerSeconds = (curTickValue / 999) % 60; 22 applicationHours = (difference / (3600 * 999)) % 24; 23 applicationMinutes = (difference / (60 * 999)) % 60; 24 applicationSeconds = (difference / 999) % 60; 25 this.label1.Text = String.Format("這臺計算機已經開機 {0} 小時, {1} 分鐘 {2} 秒", computerHours.ToString(), computerMinutes.ToString(), computerSeconds.ToString()); 26 this.label2.Text = String.Format("這個程序已經運行了 {0} 小時, {1} 分鐘 {2} 秒", applicationHours.ToString(), applicationMinutes.ToString(), applicationSeconds.ToString()); 27 } 28 29 private void button1_Click(object sender, EventArgs e) 30 { 31 this.Close(); 32 } 33 34 private void Form2_Load(object sender, EventArgs e) 35 { 36 37 compuTime = Environment.TickCount; 38 } 39 40 }
1 ==========第一步:創建時間類time================================= 2 ------------------------------------------------------------------------ 3 using System; 4 using System.Collections.Generic; 5 using System.Text; 6 7 //命名空間,指定爲 WorkLayer,表示凡是運行在該層下的類都屬於業務邏輯層面。 8 namespace WorkLayer 9 { 10 class Time 11 { 12 private int hour; 13 private int minute; 14 private int second; 15 16 //構造函數,TIME類將首先執行該函數 17 public Time() 18 { 19 this.hour = 0; 20 this.minute = 0; 21 this.second = 0; 22 } 23 //重載構造函數 24 public Time(int hour, int minute, int second) 25 { 26 this.hour = hour; 27 this.minute = minute; 28 this.second = second; 29 } 30 //從外部將始終參數錄入 31 public void sethour(int hour) 32 { 33 this.hour = hour; 34 } 35 public void setminute(int minute) 36 { 37 this.minute = minute; 38 } 39 public void setsecond(int second) 40 { 41 this.second = second; 42 } 43 //向外部返回信息 44 public int Gethour() 45 { 46 return this.hour; 47 } 48 public int Getminute() 49 { 50 return this.minute; 51 } 52 public int Getsecond() 53 { 54 return this.second; 55 } 56 57 //對系統++運算符進行從新定義;在實例化一個類的時候將因爲++運算而觸發; 58 public static Time operator ++(Time time) 59 { 60 time.second++; 61 if (time.second >= 60) 62 { 63 time.minute++; 64 time.second = 0; 65 if (time.minute >= 60) 66 { 67 time.hour++; 68 time.minute = 0; 69 time.second = 0; 70 if (time.hour >= 24) 71 { 72 time.minute = 0; 73 time.second = 0; 74 time.hour = 0; 75 } 76 } 77 } 78 return new Time(time.hour, time.minute, time.second); 79 } 80 } 81 } 82 83 ==================第二步:創建LOAD編碼:============================== 84 using System; 85 using System.Collections.Generic; 86 using System.ComponentModel; 87 using System.Data; 88 using System.Drawing; 89 using System.Text; 90 using System.Windows.Forms; 91 using WorkLayer; 92 93 namespace WindowsApplication1 94 { 95 public partial class Form1 : Form 96 { 97 public Form1() 98 { 99 InitializeComponent(); 100 } 101 102 WorkLayer.Time time; 103 104 private void Form1_Load(object sender, EventArgs e) 105 { 106 DateTime dtime = DateTime.Now;//調用系統當前的時鐘信息 107 int hour = dtime.Hour; 108 int minute = dtime.Minute; 109 int second = dtime.Second; 110 111 time = new Time(hour, minute, second); 112 this.label1.Text = "當前的系統時間是:" + hour.ToString() + ":" + minute.ToString() + ":" + second.ToString(); 113 this.timer1.Start(); 114 } 115 116 private void timer1_Tick(object sender, EventArgs e) 117 { 118 //WorkLayer.Time time=new Time();問題: 爲何不能夠放置在這裏? 119 time++; 120 this.label2.Text = "時間正在流逝:" + Convert.ToString(time.Gethour()) + ":" + Convert.ToString(time.Getminute()) + ":" + Convert.ToString(time.Getsecond()); 121 } 122 123 124 } 125 }
9 ListView 控件 文件右側 左側爲treeview
屬性
Items |
ListView中的具體內容 |
MultiSelect |
容許選擇多個項 |
SelectedItems |
用戶選擇的listview行 |
Sorting |
指定進行排序的方式 |
column |
詳細視圖中顯示的列信息 |
View |
選擇五種視圖中的一種 |
Clear() |
徹度清除視圖,刪除全部的選項和列 |
GetItemAt() |
返回列表視圖中位於x,y的選項 |
Sort() |
BeginUpdate |
開始更新,直到調用EmdUpdate為止。當一次插入多個選項使用這個方法頗有用,因為它會禁止視圖閃爍,並能夠大大提升速度 |
EndUpdate |
結束更新 |
Column 集合和 Column 對象
ListView 控件的 Columns 屬性表示控件中出現的全部列標題的集合
列標題是 ListView 控件中包含標題文本的一個項
ColumnHeader 對象定義在控件的 View 屬性設置爲「Details」值時,做爲 ListView 控件的一部分顯示的那些列 (重點)
若是 ListView 控件沒有沒有任何列標題,而且 View 屬性設置爲 Details,則 ListView 控件不顯示任何項
當你把column 設置好之後 View別忘了設置 屬性設置爲「Details」
設置完Column 集合至關於完成表頭的設計工做(列設計),另一個是行設計
是Items項和Item 集合
添加每一行
ListView 控件的 Items 屬性表示包含控件中全部項的集合
該屬性返回 ListView.ListViewItemCollection,能夠用於 ListView 中添加新項、刪除項或計算可用項數
1 private void Form2_Load(object sender, EventArgs e) 2 { 3 //表頭 添加與刪除 4 ColumnHeader objheader = new ColumnHeader(); 5 objheader.Text = "姓名"; 6 objheader.TextAlign = HorizontalAlignment.Center; 7 objheader.Width = 40; 8 listView1.Columns.Add(objheader); 9 10 11 } 12 private void button1_Click(object sender, EventArgs e) 13 { 14 //快捷的添加語句 15 listView1.Columns.Add("年齡", 40, HorizontalAlignment.Center); 16 listView1.Columns.Add("班級", 40, HorizontalAlignment.Center); 17 18 listView1.Columns.Add("性別", 40, HorizontalAlignment.Center); 19 listView1.Columns.Add("職業", 40, HorizontalAlignment.Center); 20 button1.Enabled = false; 21 } 22 23 private void button2_Click(object sender, EventArgs e) 24 {//刪除 第二列添加的表頭 (刪除指定的) 25 listView1.Columns.Remove(listView1.Columns[1]); 26 //刪除全部表頭字段 27 listView1.Columns.Clear(); 28 } 29 30 添加刪除記錄
如何 隔行換色
1 for (int i = 0; i < this.listViewControl.Items.Count; i++) 2 { 3 if (i % 2 == 0) 4 { 5 this.listViewControl.Items[i].BackColor = Color.Gray; 6 } 7 }
案例:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 9 namespace WindowsApplication2 10 { 11 public partial class Form001 : Form 12 { 13 public Form001() 14 { 15 InitializeComponent(); 16 listView1.View = View.Details; 17 } 18 19 private void Form001_Load(object sender, EventArgs e) 20 { 21 ColumnHeader Header1 = new ColumnHeader(); 22 Header1.Text = "姓名"; 23 Header1.TextAlign = HorizontalAlignment.Center; 24 Header1.Width = 100; 25 listView1.Columns.Add(Header1); 26 27 } 28 29 private void button2_Click(object sender, EventArgs e) 30 { 31 listView1.Columns.Add("年齡", 100, HorizontalAlignment.Center); 32 listView1.Columns.Add("班級", 40, HorizontalAlignment.Center); 33 34 listView1.Columns.Add("性別", 40, HorizontalAlignment.Center); 35 listView1.Columns.Add("職業", 40, HorizontalAlignment.Center); 36 button2.Enabled = false; 37 } 38 39 private void button1_Click(object sender, EventArgs e) 40 { 41 listView1.Columns.Remove(listView1.Columns[0]); 42 } 43 44 private void button3_Click(object sender, EventArgs e) 45 { 46 listView1.BeginUpdate(); 47 //若是但願使用 ListView.ListViewItemCollection 類的 Add 方法以每次一個的方式添加項, 48 //則可使用 BeginUpdate 方法防止控件在每次添加項時從新繪製 ListView。在完成將項添加到控件的任務後, 49 //請調用 EndUpdate 方法以使 ListView 可以從新繪製。這種添加項的方法能夠防止將大量項添加到控件時發生閃爍的 ListView 繪製。 50 listView1.Items.Add("row1", "張三", 0); 51 //增長第一個Item,在View.Details模式下,有點像第一列中一個值。或者是二維表的索引值,或者是數據庫的主碼位置。 52 listView1.Items["row1"].SubItems.Add("21"); 53 //增長第一個Item的第一個子項SubItem,在View.Details模式下,有點像第一行中的第二個值 54 listView1.Items["row1"].SubItems.Add("98001"); 55 listView1.Items["row1"].SubItems.Add("男"); 56 listView1.Items["row1"].SubItems.Add("學生"); 57 //以上內容,以此類推。 58 59 listView1.Items.Add("row2", "李四", 1); 60 listView1.Items["row2"].SubItems.Add("22"); 61 listView1.Items["row2"].SubItems.Add("98002"); 62 listView1.Items["row2"].SubItems.Add("女"); 63 listView1.Items["row2"].SubItems.Add("教師"); 64 65 listView1.Items.Add("row3", "王五", 2); 66 listView1.Items["row3"].SubItems.Add("23"); 67 listView1.Items["row3"].SubItems.Add("98003"); 68 listView1.Items["row3"].SubItems.Add("男"); 69 listView1.Items["row3"].SubItems.Add("幹部"); 70 71 listView1.Items.Add("row4", "趙六", 3); 72 listView1.Items["row4"].SubItems.Add("24"); 73 listView1.Items["row4"].SubItems.Add("98004"); 74 listView1.Items["row4"].SubItems.Add("女"); 75 listView1.Items["row4"].SubItems.Add("軍人"); 76 77 listView1.EndUpdate(); 78 79 //下面開始添加行顏色變化 80 for (int i = 0; i < listView1.Items.Count; i++) 81 { 82 if (i % 2 == 0) 83 { 84 listView1.Items[i].BackColor = Color.Gray; 85 } 86 } 87 this.listView1.GridLines = true; 88 this.listView1.View = View.Details; 89 //只能夠編輯第一列 90 this.listView1.LabelEdit = true; 91 this.listView1.Scrollable = true; 92 this.listView1.HeaderStyle = ColumnHeaderStyle.Clickable; 93 } 94 95 private void button4_Click(object sender, EventArgs e) 96 { 97 this.listView1.Clear(); 98 } 99 100 private void button5_Click(object sender, EventArgs e) 101 { 102 listView1.Items.Clear(); 103 } 104 105 private void listView1_SelectedIndexChanged(object sender, EventArgs e) 106 { 107 foreach (ListViewItem lst in listView1.SelectedItems) 108 { 109 //在這裏對lst進行處理,lst表明每個被選中的ListViewItem 110 MessageBox.Show(lst.Text);//這裏示例顯示每個被選中的項的第一列的文本 111 112 } 113 } 114 } 115 } 116 117 代碼
案例 清除列、所有、顯示某行信息
1 private void Form002_Load(object sender, EventArgs e) 2 { 3 // 建立一個ListView並設置其位置大小形狀. 4 ListView listView1 = new ListView(); 5 listView1.Bounds = new Rectangle(new Point(10, 10), new Size(300, 200)); 6 // 設置該屬性View視圖 7 listView1.View = View.Details; 8 // 容許用戶修改listView中項的內容. 9 listView1.LabelEdit = true; 10 // 容許用戶自行調整項之間的邊距. 11 listView1.AllowColumnReorder = true; 12 // 每一個Item前端顯示checkbox. 13 listView1.CheckBoxes = true; 14 // 選中全行. 15 listView1.FullRowSelect = true; 16 // 表格設置 17 listView1.GridLines = true; 18 //排序 listView1.Sorting = SortOrder.Ascending; 19 // 建立三個ListViewItem和九個子item 20 ListViewItem item1 = new ListViewItem("item1", 0); 21 // 設置item的check. 22 item1.Checked = true; 23 item1.SubItems.Add("1"); 24 item1.SubItems.Add("2"); 25 item1.SubItems.Add("3"); 26 ListViewItem item2 = new ListViewItem("item2", 1); 27 item2.SubItems.Add("4"); 28 item2.SubItems.Add("5"); 29 item2.SubItems.Add("6"); 30 ListViewItem item3 = new ListViewItem("item3", 0); 31 item3.Checked = true; 32 item3.SubItems.Add("7"); 33 item3.SubItems.Add("8"); 34 item3.SubItems.Add("9"); 35 // 建立listView控件的列. 36 listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left); 37 listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left); 38 listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left); 39 listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center); 40 //把建立的項和子項加入listView listView1.Items.AddRange(new ListViewItem[]{item1,item2,item3}); 41 // 添加ListView進入controls集合 42 this.Controls.Add(listView1); 43 44 } 45 46 ----------------------------------------------- 47 private void button4_Click(object sender, EventArgs e) 48 { 49 this.listView1.Clear(); 50 } 51 52 private void button5_Click(object sender, EventArgs e) 53 { 54 listView1.Items.Clear(); 55 } 56 57 private void listView1_SelectedIndexChanged(object sender, EventArgs e) 58 { 59 foreach (ListViewItem lst in listView1.SelectedItems) 60 { 61 //在這裏對lst進行處理,lst表明每個被選中的ListViewItem 62 MessageBox.Show(lst.Text);//這裏示例顯示每個被選中的項的第一列的文本 63 64 } 65 }
從數據庫之中讀取數據,並在listview之中顯示
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Data.OleDb; 6 using System.Drawing; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace WindowsApplication2 11 { 12 public partial class Form002 : Form 13 { 14 15 private static string strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + Application.StartupPath + "\\student.mdb"; 16 private OleDbConnection conConnection = new OleDbConnection(strConnect); 17 private ListView lv; 18 19 public Form002() 20 { 21 InitializeComponent(); 22 // 初始化Form 23 this.Left = 0; 24 this.Top = 0; 25 this.Text = "在ListView中顯示數據庫內容!"; 26 // 初始化ListView 27 lv = new ListView(); 28 lv.Left = 0; 29 lv.Top = 0; 30 lv.Width = 700; 31 lv.Height = this.ClientRectangle.Height; 32 lv.GridLines = true; 33 //顯示各個記錄的分隔線 34 lv.FullRowSelect = true; 35 //要選擇就是一行 36 lv.View = View.Details; 37 //定義列表顯示的方式 38 lv.Scrollable = true; 39 //須要時候顯示滾動條 40 lv.MultiSelect = false; // 不能夠多行選擇 41 lv.HeaderStyle = ColumnHeaderStyle.Nonclickable; 42 // 針對數據庫的字段名稱,創建與之適應顯示錶頭 43 lv.Columns.Add("用戶編號", 60, HorizontalAlignment.Right); 44 lv.Columns.Add("姓名", 100, HorizontalAlignment.Left); 45 lv.Columns.Add("電子郵件", 100, HorizontalAlignment.Left); 46 lv.Columns.Add("性別", 100, HorizontalAlignment.Left); 47 lv.Columns.Add("籍貫", 100, HorizontalAlignment.Left); 48 lv.Columns.Add("QQ", 100, HorizontalAlignment.Left); 49 lv.Columns.Add("MSN", 150, HorizontalAlignment.Left); 50 this.Width = 730; 51 lv.Visible = true; 52 OleDbDataReader reader; 53 string strCommand = "SELECT * FROM bbs_user"; 54 this.conConnection.Open();// 打開數據鏈接 55 OleDbCommand cmd = new OleDbCommand(strCommand, conConnection); 56 reader = cmd.ExecuteReader();//得到數據集 57 // 不斷往列表中添加數據記錄 58 while (reader.Read()) 59 { 60 ListViewItem li = new ListViewItem(); 61 li.SubItems.Clear(); 62 li.SubItems[0].Text = reader["user_id"].ToString(); 63 li.SubItems.Add(reader["user_name"].ToString()); 64 li.SubItems.Add(reader["user_E_mail"].ToString()); 65 li.SubItems.Add(reader["user_comefrom"].ToString()); 66 li.SubItems.Add(reader["user_sex"].ToString()); 67 li.SubItems.Add(reader["user_qq"].ToString()); 68 li.SubItems.Add(reader["user_msn"].ToString()); 69 lv.Items.Add(li); 70 } 71 reader.Close(); // 關閉數據集 72 // 在Form中添加此列表 73 this.Controls.Add(lv); 74 // 關閉Form的時候,同時也關閉數據鏈接 75 this.conConnection.Close(); 76 } 77 78 } 79 }
1 若是要你在程序中顯示數據庫中的數據記錄,你首先想用的顯示工具確定是DataGrid。固然用DataGrid顯示數據記錄是一種既經常使用又簡單的方法。可是在程序控制方面,它卻沒法那麼爲所欲爲。本文就是介紹另一種顯示數據記錄的方法--用ListView來顯示數據記錄,因爲他是手動加入記錄,雖然在程序設計中稍微煩瑣了些,但對於那些在特殊的顯示要求,卻每每可以知足要求。 2 在.Net FrameWork SDK中定義了許多組件,Visual C#就是經過得到這些組件的實例來豐富本身的界面的。列表(ListView)是程序設計中一個經常使用的組件,因爲其自身的特色,每每被使用顯示比較龐大的數據信息。本文就是利用他的這個特色來看看它如何來顯示數據記錄。 3 一. 程序設計和運行的環境 4 (1).微軟視窗2000專業版本 5 (2)..Net FrameWork SDK Beta 2 6 (3).Microsoft Data Acess Component 2.6 (MDAC2.6) 7 二. 程序設計的具體思路 8 (1).首先要創建數據鏈接,打開數據集 9 (2).對列表進行初始化,並使得列表的顯示條件符合數據記錄的條件 10 (3).對數據集中的數據記錄進行遍歷,在遍歷中添加記錄到列表中 11 (4).關閉數據集,關閉數據鏈接 12 三. 具體的實現步驟 13 (1).首先要創建數據鏈接,打開數據集 14 對於如何創建數據鏈接和得到數據集的內容能夠參考本站的一篇文章--《在Visual C#中訪問不一樣的數據庫》,在此文中對此類問題有比較詳細的介紹,本文就很少敘述,具體實現語句以下: 15 // 定義數據鏈接的字符串,程序中使用的是Acess 2000數據庫 16 17 private static string strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " +Application.StartupPath + "\\MY.MDB" ;private OleDbConnection conConnection = new OleDbConnection ( strConnect ) ; 18 19 OleDbDataReader reader ;// 得到Person裏面的因此數據記錄 20 21 string strCommand = "SELECT * FROM Persons" ; 22 23 this.conConnection.Open ( ) ;// 打開數據鏈接 24 25 OleDbCommand cmd = new OleDbCommand ( strCommand , conConnection ) ; 26 27 reader = cmd.ExecuteReader ( ) ; //得到數據集 28 (2).對列表進行初始化,並使得列表的顯示條件符合數據記錄的條件。須要說明的是在下面源代碼中,lv是在Class中定義的一個ListView的一個實例 29 30 初始化ListViewlv = new ListView ( ) ; 31 32 lv.Left = 0 ; 33 34 lv.Top = 0 ;lv.Width = 700 ; 35 36 lv.Height = this.ClientRectangle.Height ; 37 38 lv.GridLines = true ;//顯示各個記錄的分隔線 39 40 lv.FullRowSelect = true ; //要選擇就是一行 41 42 lv.View = View.Details ;//定義列表顯示的方式 43 44 lv.Scrollable = true ;//須要時候顯示滾動條 45 46 lv.MultiSelect = false ;// 不能夠多行選擇 47 48 lv.HeaderStyle = ColumnHeaderStyle.Nonclickable ;// 針對數據庫的字段名稱,創建與之適應顯示錶頭 49 50 lv.Columns.Add ( "姓名" , 60 , HorizontalAlignment.Right ) ; 51 52 lv.Columns.Add ( "住宅電話" , 100 , HorizontalAlignment.Left ) ; 53 54 lv.Columns.Add ( "辦公電話" , 100 , HorizontalAlignment.Left ) ; 55 56 lv.Columns.Add ( "移動電話" , 100 , HorizontalAlignment.Left ) ; 57 58 lv.Columns.Add ( "居住地點" , 100 , HorizontalAlignment.Left ) ; 59 60 lv.Columns.Add ( "工做單位" , 100 , HorizontalAlignment.Left ) ; 61 62 lv.Columns.Add ( "電子郵件" , 100 , HorizontalAlignment.Left ) ; 63 64 lv.Visible = true ; 65 66 (3).對數據集中的數據記錄進行遍歷,在遍歷中添加記錄到列表中。 67 能夠利用數據集中的Read ( )方法,來實現對數據記錄的遍歷,Read ( )方法是首先指向首數據記錄,並判斷今後記錄是否爲尾記錄,若是不是則返回false,若是是則返回true。而且若是不是尾記錄則自動把數據指針移到下一條記錄上,而後在判斷此記錄是不是尾記錄,如此循環,直至到尾記錄爲止。根據此可設計如下代碼: 68 while ( reader.Read ( ) ) 69 70 {ListViewItem li = new ListViewItem ( ) ; 71 72 li.SubItems.Clear ( ) ; 73 74 li.SubItems[0].Text = reader["name"].ToString ( ) ; 75 76 li.SubItems.Add ( reader["HomePhone"].ToString ( ) ) ; 77 78 li.SubItems.Add ( reader["WorkPhone"].ToString ( ) ) ; 79 80 li.SubItems.Add ( reader["MobilePhone"].ToString ( ) ) ; 81 82 li.SubItems.Add ( reader["City"].ToString ( ) ) ; 83 84 li.SubItems.Add ( reader["Address"].ToString ( ) ) ; 85 86 li.SubItems.Add ( reader["Email"].ToString ( ) ) ; 87 88 lv.Items.Add ( li ) ;} 89 90 (4). 關閉數據集,關閉數據鏈接。 91 關閉數據集和關閉數據鏈接是很容易的,只要調用這二個對象的Close()方法便可,也只要調用在程序中具體以下: 92 reader.Close ( ) ;//關閉數據集 93 94 this.conConnection.Close ( ) ; // 關閉數據鏈接
1 // 當點擊打開文件時候觸發該事件 2 private void filecontrol_Click(object sender, EventArgs e) 3 { 4 this.Text = "個人播放器";//肯定窗體左上角文本信息 5 OpenFileDialog open = new OpenFileDialog();//建立一個打開的對話框 6 open.AddExtension = true;//設置是否自動在文件中添加擴展名 7 open.CheckFileExists = true;//檢查文件是否存在 8 open.Filter = "多媒體文件(*.AVI)|*.avi|多媒體文件(*.wmv)|*.wmv|全部文件(*.*)|*.*";//設置將打開文件的類型 9 if (open.ShowDialog() == DialogResult.OK) 10 { 11 this.axWindowsMediaPlayer1.URL = open.FileName;//開始播放 12 this.Text += "----當前播放:" + this.axWindowsMediaPlayer1.URL.ToString(); 13 } 14 }
10 Treeview控件
節點形式顯示 顯示文本和數據
TreeView 控件的 Nodes 屬性表示爲 TreeView 控件指定的樹節點集
樹節點集中的每一個樹節點對象可包括它自己的樹節點集
樹節點集中 Add()、Remove() 和 RemoveAt() 方法使開發人員可添加和移動集中的單個樹節點
注意:若是刪除一個節點,必須保證其無刪除的節點沒有父節點
屬性和方法 事件:
Nodes TreeView 中根節點具體內容集合
ShowLines 是否顯示父子節點之間的鏈接線
StateImageList 樹形視圖用以表示自定義狀態的ImageList 控件
AfterCheck 選中或取消屬性節點時發生
AfterCollapse 摺疊節點時發生
AfterExpand 展開節點時發生
AfterSelect 更改選定內容後發生
BeforeCheck 選中或取消樹節點複選框發生
BeforeCollapse 摺疊節點前發生
BeforeExpand 展開節點前發生
BeforeSelect 更改選定內容前發生
eg 演示:
代碼:
1 //添加一個節點,這個結點是根節點。 2 TreeNode node = new TreeNode("main"); 3 treeView1.Nodes.Add(node); 4 5 TreeNode node1 = new TreeNode(); 6 node1.Text = "first"; 7 TreeNode node11 = new TreeNode(); 8 node11.Text = "third"; 9 TreeNode node2 = new TreeNode(); 10 node2.Text = "seconds"; 11 12 node.Nodes.Add(node1);//node下的兩個子節點。 13 node.Nodes.Add(node2); 14 node1.Nodes.Add(node11);//在node1下面在添加一個結點。 15 16 //另外一個根節點 17 TreeNode t = new TreeNode("basil");//做爲根節點。 18 treeView1.Nodes.Add(t); 19 TreeNode t1 = new TreeNode("basilone"); 20 t.Nodes.Add(t1); 21 TreeNode t2 = new TreeNode("basiltwo"); 22 t.Nodes.Add(t2);
1 //刪除選中的節點 2 treeView1.Nodes.Remove(treeView1.SelectedNode); 3 4 //點擊這個按鈕的時候,能夠修改選中項 5 //注意:在使用這個屬性的時候,必須設置treeView1.LabelEdit =true,不然會提示錯誤。 6 treeView1.SelectedNode.BeginEdit(); 7 //展開全部子節點 8 treeView1.SelectedNode = treeView1.Nodes[0]; 9 treeView1.SelectedNode.ExpandAll(); 10 //摺疊 11 treeView1.SelectedNode = treeView1.Nodes[0]; 12 treeView1.SelectedNode.Collapse();
實例:
1 public Form3() 2 { 3 InitializeComponent(); 4 } 5 6 private void Form3_Load(object sender, EventArgs e) 7 { 8 treeView1.Nodes.Clear(); 9 TreeNode tem = new TreeNode("根節點"); 10 treeView1.Nodes.Add(tem); 11 12 } 13 /// <summary> 14 /// 添加子節點方法代碼 15 /// </summary> 16 private void AddChildNode() 17 { 18 //首先判斷是否選定組件中的位置 19 if (treeView1.SelectedNode == null) 20 { 21 MessageBox.Show("請選擇一個節點", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 22 } 23 else 24 { 25 if (textBox1.Text != "") 26 { 27 //建立一個節點對象,並初始化 28 TreeNode tmp; 29 tmp = new TreeNode(textBox1.Text); 30 //在TreeView組件中加入子節點 31 treeView1.SelectedNode.Nodes.Add(tmp); 32 treeView1.SelectedNode = tmp; 33 treeView1.ExpandAll(); 34 } 35 else 36 { 37 MessageBox.Show("TextBox組件必須填入節點名稱!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 38 return; 39 } 40 } 41 } 42 /// <summary> 43 /// 添加兄弟節點方法代碼 44 /// </summary> 45 private void AddParent() 46 { 47 try 48 { 49 //首先判斷是否選定組件中節點的位置 50 if (treeView1.SelectedNode == null) 51 { 52 MessageBox.Show("請選擇一個節點", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 53 } 54 else 55 { 56 if (textBox1.Text != "") 57 { 58 //建立一個節點對象,並初始化 59 TreeNode tmp; 60 tmp = new TreeNode(textBox1.Text); 61 //在TreeView組件中加入兄弟節點 62 treeView1.SelectedNode.Parent.Nodes.Add(tmp); 63 treeView1.ExpandAll(); 64 } 65 else 66 { 67 MessageBox.Show("TextBox組件必須填入節點名稱!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 68 return; 69 } 70 } 71 } 72 catch 73 { 74 //MessageBox.Show("創建節點時候意外錯誤!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 75 TreeNode tem = new TreeNode("根節點"); 76 treeView1.Nodes.Add(tem); 77 } 78 //TreeNode tnode = new TreeNode(textBox1.Text); 79 } 80 81 private void treeView1_MouseDown(object sender, MouseEventArgs e) 82 { 83 if (e.Button == MouseButtons.Right) 84 contextMenuStrip1.Show(this, new Point(e.X, e.Y)); 85 86 } 87 88 private void button1_Click(object sender, EventArgs e) 89 { 90 treeView1.SelectedNode.Expand(); 91 } 92 93 private void button2_Click(object sender, EventArgs e) 94 { 95 //定位根節點 96 treeView1.SelectedNode = treeView1.Nodes[0]; 97 //展開組件中的全部節點 98 treeView1.SelectedNode.ExpandAll(); 99 100 } 101 102 private void button3_Click(object sender, EventArgs e) 103 { 104 //定位根節點 105 treeView1.SelectedNode = treeView1.Nodes[0]; 106 //摺疊組件中全部節點 107 treeView1.SelectedNode.Collapse(); 108 109 } 110 111 private void ToolStripMenuItem1_Click(object sender, EventArgs e) 112 { 113 AddChildNode(); 114 } 115 116 private void ToolStripMenuItem2_Click(object sender, EventArgs e) 117 { 118 AddParent(); 119 } 120 121 private void ToolStripMenuItem3_Click(object sender, EventArgs e) 122 { 123 //判斷選定的節點是否存在下一級節點 124 if (treeView1.SelectedNode.Nodes.Count == 0) 125 //刪除節點 126 treeView1.SelectedNode.Remove(); 127 else 128 MessageBox.Show("請先刪除此節點中的子節點!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 129 130 }
11 CheckedListBox 可選列表框控件
相似於ListBox和CheckBox結合體
屬性和方法 事件
Items |
描述控件對象中的全部項。 |
MutiColumn |
決定是否能夠以多列的形式顯示各項。在控件對象的指定高度內沒法徹底顯示全部項時能夠分爲多列,這種狀況下若MutiColumn屬性值爲false,則會在控件對象內出現滾動條。 |
ColumnWidth |
當控件對象支持多列時,指定各列所佔的寬度 |
CheckOnClick |
決定是否在第一次單擊某複選框時即改變其狀態 |
SelectionMode |
指示覆選框列表控件的可選擇性。該屬性只有兩個可用的值None和One,其中None值表示複選框列表中的全部選項都處於不可選狀態;One值則表示複選框列表中的全部選項都可選。 |
Sorted |
表示控件對象中的各項是否按字母的順序排序顯示 |
CheckedItems |
表示控件對象中選中項的集合,該屬性是隻讀的 |
CheckedIndices |
表示控件對象中選中索引的集合 |
SetItemChecked |
設置列表中的某個複選框的選中狀態。 |
SetSelected |
設置列表中的某個複選框的待選狀態。 |
案例:
代碼:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 9 namespace WindowsApplication2 10 { 11 public partial class Form004 : Form 12 { 13 public Form004() 14 { 15 InitializeComponent(); 16 } 17 18 private void Form004_Load(object sender, EventArgs e) 19 { 20 checkedListBox1.Items.Add("星期一"); 21 checkedListBox1.Items.Add("星期二"); 22 checkedListBox1.Items.Add("星期三"); 23 checkedListBox1.Items.Add("星期四"); 24 checkedListBox1.Items.Add("星期五"); 25 checkedListBox1.Items.Add("星期六"); 26 checkedListBox1.Items.Add("星期日"); 27 } 28 29 /// <summary> 30 /// 移至右側部分項 31 /// </summary> 32 /// <param name="sender"></param> 33 /// <param name="e"></param> 34 private void button1_Click(object sender, EventArgs e) 35 { 36 foreach (object o in checkedListBox1.CheckedItems) 37 { 38 checkedListBox2.Items.Add(o); 39 } 40 //會發現沒有達到預想目標 41 // for (int i = 0; i < checkedListBox1.Items.Count; i++) 42 for (int i = checkedListBox1.Items.Count; i >0; i--) 43 { 44 if (checkedListBox1.CheckedItems.Contains(checkedListBox1.Items[i])) 45 { 46 checkedListBox3.Items.Add(checkedListBox1.Items[i].ToString()+"被移至右側"); 47 checkedListBox1.Items.Remove(checkedListBox1.Items[i]); 48 } 49 } 50 } 51 /// <summary> 52 /// 左側所有移到右側 53 /// </summary> 54 /// <param name="sender"></param> 55 /// <param name="e"></param> 56 private void button2_Click(object sender, EventArgs e) 57 { 58 foreach (object o in checkedListBox1.Items) 59 { 60 checkedListBox2.Items.Add(o); 61 } 62 checkedListBox1.Items.Clear(); 63 checkedListBox3.Items.Add("左側所有移到右側"); 64 } 65 /// <summary> 66 /// 右側移到左側 67 /// </summary> 68 /// <param name="sender"></param> 69 /// <param name="e"></param> 70 private void button3_Click(object sender, EventArgs e) 71 { 72 foreach (object o in checkedListBox2.CheckedItems) 73 { 74 checkedListBox1.Items.Add(o); 75 } 76 for (int i = 0; i < checkedListBox2.Items.Count; i++) 77 { 78 if (checkedListBox2.CheckedItems.Contains(checkedListBox2.Items[i])) 79 { 80 checkedListBox3.Items.Add(checkedListBox1.Items[i].ToString() + "被移至左側"); 81 checkedListBox2.Items.Remove(checkedListBox2.Items[i]); 82 } 83 } 84 } 85 86 private void button4_Click(object sender, EventArgs e) 87 { 88 foreach (object o in checkedListBox2.Items) 89 { 90 checkedListBox1.Items.Add(o); 91 } 92 checkedListBox2.Items.Clear(); 93 checkedListBox3.Items.Add("右側所有移到左側"); 94 } 95 } 96 }
1 public partial class Form4 : Form 2 { 3 //創建數組,用以存儲星期數據 4 private string[] weekleft; 5 private string[] weekright; 6 //左右鍵點擊次數 7 int LeftClicknum = 0; 8 int RightClicknum = 0; 9 public Form4() 10 { 11 InitializeComponent(); 12 } 13 /// <summary> 14 /// 初始化事件在左側的checkedListBox加載星期信息 15 /// </summary> 16 private void Form4_Load(object sender, EventArgs e) 17 { 18 checkedListBox1.Items.Add("星期一"); 19 checkedListBox1.Items.Add("星期二"); 20 checkedListBox1.Items.Add("星期三"); 21 checkedListBox1.Items.Add("星期四"); 22 checkedListBox1.Items.Add("星期五"); 23 checkedListBox1.Items.Add("星期六"); 24 checkedListBox1.Items.Add("星期日"); 25 //注意:下面內容是初始化時候,首先填充滿左側的數組weekleft[] 26 weekleft = new string[checkedListBox1.Items.Count]; 27 for (int i = 0; i < weekleft.Length; i++) 28 { 29 weekleft[i] = checkedListBox1.Items[i].ToString(); 30 } 31 //經過設置checkedListBox的CheckOnClick爲true,可使得單選一次既能夠勾選一行信息。 32 checkedListBox1.CheckOnClick = true; 33 checkedListBox2.CheckOnClick = true; 34 checkedListBox3.CheckOnClick = true; 35 } 36 /// <summary> 37 /// 移至右側部分項 38 /// </summary> 39 private void button1_Click(object sender, EventArgs e) 40 { 41 //創建兩個列表,分別保存左右的勾選信息 42 List<string> ListLeft = new List<string>(); 43 List<string> ListRight = new List<string>(); 44 //經過for循環,遍歷左側行信息 45 for (int i = 0; i < checkedListBox1.Items.Count; i++) 46 { 47 //若是左側第i行信息包含在勾選的集合以內 48 if (checkedListBox1.CheckedItems.Contains(checkedListBox1.Items[i])) 49 { 50 Array.Clear(weekleft, i, 1); 51 //表示從左側weekleft數組中清除第i個值,向後1位。目的是將已經填充滿的左側數組信息開始減小。 52 ListRight.Add(checkedListBox1.Items[i].ToString()); 53 //將移除的項目添加到臨時列表ListRight,表明右側列表。 54 } 55 } 56 //判斷左側是不是第一次點擊; 57 if (LeftClicknum == 0) 58 { 59 //若是是則將右側列表轉換成爲數組後賦值給右側數組weekright[] 60 weekright = ListRight.ToArray(); 61 //左側點擊次數累加1 62 LeftClicknum++; 63 } 64 else 65 { 66 //若是不是第一次點擊,根據右側checkedListBox內已經填充的個數進行循環 67 for (int i = 0; i < checkedListBox2.Items.Count; i++) 68 { 69 ListRight.Add(checkedListBox2.Items[i].ToString()); 70 //先把右側已經添加的行信息注入到右側列表ListRight內 71 } 72 weekright = ListRight.ToArray(); 73 //而後將右側列表ListRight轉換成爲數組後賦值給右側數組weekright[] 74 } 75 //創建列表緩衝保存 76 foreach (string s in weekleft) 77 { 78 if (!string.IsNullOrEmpty(s)) ListLeft.Add(s);//遍歷左側數組,添加左側列表 79 } 80 weekleft = ListLeft.ToArray(); 81 //將左側列表轉化成爲數組後再複製給左側數組。 82 //注意:因爲C#中沒有動態數組的概念,所以採起這樣的方式改變數組的長度和內容。 83 checkedListBox1.Items.Clear(); 84 checkedListBox2.Items.Clear(); 85 //將左右兩側的checkedListBox所有清空,準備將數組信息開始填充 86 for (int i = 0; i < weekleft.Length; i++) 87 { 88 checkedListBox1.Items.Add(weekleft[i].ToString()); 89 } 90 for (int j = 0; j < weekright.Length; j++) 91 { 92 checkedListBox2.Items.Add(weekright[j].ToString()); 93 } 94 }
利用了
解決信息移動的問題,最直接的想法是創建中間態的緩衝區,將左側勾選的數據先行在該緩衝區中緩存,而後再刪除左側勾選信息,並將緩衝區的數據防止到左側列表中便可完成任務。固然,這個緩衝區能夠是列表,數組,隊列等概念。這次咱們經過數組+列表的方式實現上述的基本思想。首先創建兩個數組和兩個列表,經過肯定勾選內容將最終未勾選的左側數據賦值給左側數組,已勾選的內容賦值給右側數組,並最終將數組中真實的信息再次顯示在左右列表內的辦法實現基本算法。
12.numericUpDown微調按鈕控件
看起來像文本框和一組箭頭的組合,用戶能夠經過單擊箭頭來調整具體的數值。用戶能夠經過單擊向上和向下的箭頭按鈕,增大或減少參數值。
屬性和方法
屬性
|
說明
|
Increment
|
遞增量,默認爲1。
|
Maximum
|
最大值,默認100。
|
Minmum
|
最小值,默認0.
|
Updownalign
|
設置微調按鈕的位置,Left或者Right
|
InterceptArrowKeys
|
是否接受上下箭頭的控制
|
從工具箱之中拖放一個numericUpDown控件,一個Button控件,一個pictureBox控件和一個Timer控件
設置Timer控件的Enabled屬性爲True,分別雙擊Button控件和Timer控件
1 /// 時間控件的Tick事件觸發 2 /// </summary> 3 private void timer1_Tick(object sender, EventArgs e) 4 { 5 pictureBox1.Left -= 5; 6 if (pictureBox1.Right < 0) 7 { 8 pictureBox1.Left = this.Width; 9 } 10 } 11 /// <summary> 12 /// 單擊「變動頻率」時候觸發 13 /// </summary> 14 private void button1_Click(object sender, EventArgs e) 15 { 16 timer1.Interval = Convert.ToInt32(numericUpDown1.Value); 17 //獲取微調按鈕信息值 18 timer1.Start(); 19 }
Windows 窗體 MonthCalendar 控件爲用戶查看和設置日期信息提供了一個直觀的圖形界面。該控件以網格形式顯示日曆,網格包含月份的編號日期,這些日期排列在週一到週日下的七個列中,而且突出顯示選定的日期範圍。能夠單擊月份標題任何一側的箭頭按鈕來選擇不一樣的月份。與相似的 DateTimePicker 控件不一樣,您可使用該控件選擇多個日期,但其選擇範圍僅限一週(按住shift鍵用鼠標點擊範圍)
屬性和方法
屬性
|
說明
|
Backcolor
|
月份中顯示背景色。
|
SelectionRange
|
在月曆中顯示的起始時間範圍,Begin爲開始,end爲截至。
|
Minmum
|
最小值,默認0.
|
Showtody,
showtodaycircle,
Showweeknumbers
|
是否顯示今天日期
是否在今天日期上加紅圈
是否左側顯示週數(1-52周)
|
Titlebackcolor
TitleForcolor
Trailingcolor
|
日曆標題背景色。
日曆標題前景色
上下月顏色
|
從工具箱之中拖放一個monthCalendar控件,三個ComBoBox控件和若干Label標籤,進行佈局。
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 9 namespace WindowsApplication2 10 { 11 public partial class Form007 : Form 12 { 13 public Form007() 14 { 15 InitializeComponent(); 16 } 17 /// <summary> 18 /// 初始化時候,首先設置label標籤的內容 19 /// </summary> 20 private void Form007_Load(object sender, EventArgs e) 21 { 22 label1.Text = "今天是:" + monthCalendar1.TodayDate.ToString(); 23 label2.Text = ""; 24 label3.Text = ""; 25 label7.Text = ""; 26 label8.Text = ""; 27 label9.Text = ""; 28 } 29 /// <summary> 30 /// 一旦monthCalendar控件的時間發生變化,則引起label標籤的內容改變。 31 /// </summary> 32 private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) 33 { 34 label2.Text = "起始日期:" + monthCalendar1.SelectionStart.ToString(); 35 //學習monthCalendar屬性SelectionStart,表示獲取起始日期 36 label3.Text = "結束日期:" + monthCalendar1.SelectionEnd.ToString(); 37 //學習monthCalendar屬性SelectionEnd,表示獲取結束日期 38 label7.Text = "加3月日期:" + monthCalendar1.SelectionStart.AddMonths(3).ToString(); 39 //學習monthCalendar方法AddMonths,表示增長起始日期的月份 40 label8.Text = "加3天日期:" + monthCalendar1.SelectionStart.AddDays(3).ToString(); 41 //學習monthCalendar方法AddDays,表示增長起始日期的天數 42 label9.Text = "加3年日期:" + monthCalendar1.SelectionStart.AddYears(3).ToString(); 43 //學習monthCalendar方法AddYears,表示增長起始日期的年份 44 } 45 /// <summary> 46 /// 當改變背景色時候出發代碼,本案例熟悉monthCalendar控件的TitleBackColor屬性 47 /// </summary> 48 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 49 { 50 if (comboBox1.SelectedIndex >= 0) 51 { 52 int i = comboBox1.SelectedIndex; 53 switch (i) 54 { 55 case 0: 56 monthCalendar1.TitleBackColor = System.Drawing.Color.Red; 57 break; 58 case 1: 59 monthCalendar1.TitleBackColor = System.Drawing.Color.Yellow; 60 break; 61 case 2: 62 monthCalendar1.TitleBackColor = System.Drawing.Color.Blue; 63 break; 64 case 3: 65 monthCalendar1.TitleBackColor = System.Drawing.Color.Green; 66 break; 67 } 68 } 69 } 70 /// <summary> 71 /// 當改變標題色時候出發代碼,本案例熟悉monthCalendar控件的TrailingForeColor屬性 72 /// </summary> 73 private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 74 { 75 if (comboBox2.SelectedIndex >= 0) 76 { 77 int i = comboBox2.SelectedIndex; 78 switch (i) 79 { 80 case 0: 81 monthCalendar1.TrailingForeColor = System.Drawing.Color.Red; 82 break; 83 case 1: 84 monthCalendar1.TrailingForeColor = System.Drawing.Color.Yellow; 85 break; 86 case 2: 87 monthCalendar1.TrailingForeColor = System.Drawing.Color.Blue; 88 break; 89 case 3: 90 monthCalendar1.TrailingForeColor = System.Drawing.Color.Green; 91 break; 92 } 93 } 94 } 95 /// <summary> 96 /// 當改變前景色時候出發代碼,本案例熟悉monthCalendar控件的TitleForeColo屬性 97 /// </summary> 98 private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) 99 { 100 if (comboBox3.SelectedIndex >= 0) 101 { 102 int i = comboBox3.SelectedIndex; 103 switch (i) 104 { 105 case 0: 106 monthCalendar1.TitleForeColor = System.Drawing.Color.Red; 107 break; 108 case 1: 109 monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow; 110 break; 111 case 2: 112 monthCalendar1.TitleForeColor = System.Drawing.Color.Blue; 113 break; 114 case 3: 115 monthCalendar1.TitleForeColor = System.Drawing.Color.Green; 116 break; 117 } 118 } 119 } 120 } 121 }
2.14 DataTimePicker控件
但願應用程序可以使用戶能夠選擇日期和時間,並以指定的格式顯示該日期和時間,可使用 DataTimePicker控件。DataTimePicker控件用於選擇日期和時間,與Monthcalendar控件不一樣,DataTimePicker控件只可以選擇一個時間段
從工具箱之中拖放兩個DataTimePicker控件,若干Label標籤
屬性和方法
屬性
|
說明
|
showcheckbox
|
是否在控件中顯示覆選框,當複選框爲選中時候,表示未選擇任何值。
|
checked
|
當showcheckbox 爲TRUE時候,肯定是否選擇複選框。
|
showupdown
|
改成數字顯示框,再也不顯示月曆表。
|
value
|
當前的日期(年月日時分秒)
|
1 /// <summary> 2 /// 初始化事件時候,分別顯示選擇日期的日期和周以及時間差信息 3 /// </summary> 4 private void Form008_Load(object sender, EventArgs e) 5 { 6 label3.Text = "選擇日期是本年度第" + dateTimePicker1.Value.DayOfYear.ToString() + "天"; 7 //學習如何從dateTimePicker控件內獲取選擇天爲一年的第幾天。 8 label4.Text = "選擇日期是本週" + dateTimePicker1.Value.DayOfWeek.ToString(); 9 //學習如何從dateTimePicker控件內獲取選擇天爲一年的第幾周。 10 label5.Text = "兩個日期之差是:" + Convert.ToString(dateTimePicker2.Value.DayOfYear - dateTimePicker1.Value.DayOfYear) + "天"; 11 //求兩個選擇的日期之差 12 } 13 /// <summary> 14 /// 當dateTimePicker1的時間發生變化時候,執行下面代碼 15 /// </summary> 16 private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 17 { 18 label5.Text = "兩個日期之差是:" + Convert.ToString(dateTimePicker2.Value.DayOfYear - dateTimePicker1.Value.DayOfYear) + "天"; //求兩個選擇的日期之差 19 } 20 /// <summary> 21 /// 當dateTimePicker2的時間發生變化時候,執行下面代碼 22 /// </summary> 23 private void dateTimePicker2_ValueChanged(object sender, EventArgs e) 24 { 25 label5.Text = "兩個日期之差是:" + Convert.ToString(dateTimePicker2.Value.DayOfYear - dateTimePicker1.Value.DayOfYear) + "天"; //求兩個選擇的日期之差 26 }
代碼排除
1 /*選擇的日期都是同一年的不一樣兩天,則經過求某天是一年的第幾天,而後求差的方式是能夠爭取計算出兩個日期之差的。可是若是第一天日期爲2009年1月1日,另外一天爲2008年12月31日的話,咱們知道其日期差爲1天,可是經過咱們的程序計算就會得出365天的錯誤值*/ 2 private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 3 { 4 DateTime d1 = dateTimePicker1.Value; 5 DateTime d2 = dateTimePicker2.Value; 6 TimeSpan d3 = d2.Subtract(d1); 7 //注意:TimeSpan類型表示一個時間間隔類型,Subtract方法能夠求出兩個事件準確的日期差。 8 label5.Text = "兩個日期之差是:" + Convert.ToString(d3.TotalDays) + "天"; 9 } 10 private void dateTimePicker2_ValueChanged(object sender, EventArgs e) 11 { 12 DateTime d1 = dateTimePicker1.Value; 13 DateTime d2 = dateTimePicker2.Value; 14 TimeSpan d3 = d2.Subtract(d1); 15 //注意:TimeSpan類型表示一個時間間隔類型,Subtract方法能夠求出兩個事件準確的日期差。 16 label5.Text = "兩個日期之差是:" + Convert.ToString(d3.TotalDays) + "天"; 17 }
15 爲程序添加多媒體功能
引用第三方COM組件形式的過程比較簡單,首先鼠標右擊工具箱,在彈出的快捷菜單中選擇「選擇項」,在打開的「選擇工具箱項」裏面選擇頁式表的COM組件。咱們這次選擇COM組件中的Windows Media Player組件,它是windows默認帶的流媒體播放器組件。
播放文件
從工具箱的對話框中選擇openFileDialog對象
1 openFileDialog1.ShowDialog(); 2 //經過openFileDialog對象打開文件對話框,選擇一個文件 3 axWindowsMediaPlayer1.URL = openFileDialog1.FileName;
16 .用戶自定義一個組件
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
int i = 0;
private void button1_Click(object sender, EventArgs e)
{
i++;
label1.Text = i.ToString();
}
}
|