c# 窗體開發2 高級控件的使用

 

 

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         }
pictureBox

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         }
tabControl

 選項卡 上一頁和下一頁

 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 }
ToolBar 事件

 

窗體加載

{

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 
663).對數據集中的數據記錄進行遍歷,在遍歷中添加記錄到列表中。
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 
904). 關閉數據集,關閉數據鏈接。
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控件控制圖片的移動

從工具箱之中拖放一個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         }
微調

 13.monthCalendar日曆控件

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 }
monthCalendar代碼

 

 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 .用戶自定義一個組件

 

C# 還容許用戶進行控件的自行定義。使用.NET FormWork 能夠開始和實現一些新的控件,而全部的控件不管是系統自帶的抑或是用戶自定義的,都來自control 類。此處先對control 類進行介紹。control 類是windows 窗體控件的基類,提供了windows 窗體控件中進行可視化顯示所需的全部基礎結構。因爲control 類提供了不少基礎結構,使得開發用戶自定義的控件變得相對簡單。一般狀況下,開發人員自行編寫的控件能夠分爲三類:
n 複合控件:組合現有的控件實現功能;
n 擴展控件;擴展基本控件的功能;
n 自定義控件;從頭開始建立一個全新的控件
   
在下列狀況下,能夠編寫自定義控件:
n 想要提供控件的自定義圖形化表示形式
n 須要實現沒法從標準控件獲取的自定義功

 

定義一個用戶自定義控件須要在解決方案資源管理器下右鍵鼠標,在彈出的快捷菜單之中選擇添加,添加一個「用戶控件」
 
 
 
2 )在打開的「用戶控件」界面中像創建普通窗體應用同樣從工具箱之中拖放一個label 標籤和一個Button 控件。如圖2-50 所示
 
 
圖2-50  拖放一個label標籤和一個Button控件
雙擊「改變次數」按鈕,進入鼠標單擊事件的編碼以下:
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
        int i = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            i++;
            label1.Text = i.ToString();
        }
    }
同時運行一下這個用戶自定義控件,則該控件將自動在工具箱中以組件的形式出現。而後新建一個窗體,打開工具箱將生成的組件拖放到窗體上面就能夠直接使用了。如圖2-51 所示。
相關文章
相關標籤/搜索