




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C#程序設計第七章WinForm初步內(nèi)容提要7.7高級控件7.8
com組件7.9
mdi7.10問與答7.11思考與練習7.12實戰(zhàn)任務7.1窗體7.2控件使用7.3基本控件7.4常用組件7.5菜單7.6對話框本章重難點常用控件的屬性和方法常用組件(Timer)菜單的使用對話框的使用高級控件的使用(richtextbox)MDI(菜單合并)WinForm編程初試計算1+1=2步驟1、新建WindowsFormApplication2、從左邊控件箱中拖動3個TextBox控件、1個Label控件和1個Button控件到窗體上3、在窗體空白處點右鍵選擇“屬性”,設置Text屬性為”簡易加法器”4、在Label控件上點擊右鍵選擇“屬性”,設置其Text屬性為”+”5、在Button控件上點擊右鍵選擇“屬性”,設置其Text屬性為”=”步驟6、雙擊“=”按鈕,為按鈕添加“單擊事件”處理代碼:
int
a,b,c; a=int.Parse(textBox1.Text);
b=int.Parse(textBox2.Text);
c=a+b;
textBox3.Text=c.ToString();7、點擊運行按鈕啟動程序,輸入兩個數(shù),點擊“等號”按鈕Windows窗口編程概要程序由窗體及在窗體上的控件組成控件由屬性和事件組成,屬性控制其外觀、特性、風格等代碼的執(zhí)行由事件驅動,當用戶執(zhí)行某個操作時,將會觸發(fā)該控件的某個事件(例如單擊按鈕會觸發(fā)其Click事件,移動鼠標會產(chǎn)生MouseMove事件),相應的,該事件的處理函數(shù)的代碼將會被執(zhí)行每個控件都會響應一些不同的事件,例如,單擊Button控件將觸發(fā)按鈕的Click事件Windows窗口編程概要WinForm編程主要就是決定處理控件的哪些事件,然后編寫事件的處理代碼處理代碼主要做:讀取控件的不同屬性獲取用戶在該控件上的輸入或選擇,然后處理,將計算結果顯示在控件上,或通過控件反映(設置控件的屬性或調用其方法),仍然是輸入,處理,輸出的一個過程在窗體設計器中雙擊某個控件可進入其常用事件處理代碼編輯界面7.1窗體窗體由類System.Windows.Forms.Form封裝窗體是WinForm應用開發(fā)中最基本的一個容器控件,和其它諸多普通控件一樣,都繼承于控件基類System.Windows.Forms.Control,故所有的控件都具有一些共有的特性。7.1 窗體常用屬性7.1 窗體常用屬性7.1 窗體常用屬性7.1 窗體常用方法7.1 窗體常用事件7.1 窗體常用事件7.1 鼠標事件參數(shù)MouseEventArgsClick與MouseClick事件很類似,但是MouseClikc事件的參數(shù)附帶了更多的鼠標按鍵信息。MouseClick僅能通過鼠標操作觸發(fā),而Click事件則不受此限。7.2 控件使用控件添加雙擊“工具箱”中要使用的控件,此時將會在窗體的默認位置(客戶區(qū)的左上角)添加默認大小的控件;在“工具箱”中選中一個控件,鼠標指針變成與該控件對應的形狀;把鼠標指針移到窗體中要擺放控件的位置,按下鼠標左鍵并拖動鼠標畫出控件大小后,松開鼠標即可在窗體的指定位置繪制指定大小的控件;直接把控件從“工具箱”拖放到窗體中,控件為默認大?。恢苯邮褂么a控制添加。7.2 控件使用控件調整選中要調整的控件,使用“格式”菜單或是快捷菜單中的命令或者工具欄上的格式按鈕進行調整。在調整控件的格式時,將按照基準控件對選擇的多個控件進行調整。使用Ctrl鍵或Shift鍵選擇多個控件,也可以拖動鼠標選擇一個控件范圍,此時最先進入窗體的控件將作為調整的基準控件。被選中的控件中,基準控件周圍是白色方框,其他控件周圍是黑色方框。7.2 控件使用控件分層右鍵單擊要操作的控件,從快捷菜單中選擇“置于頂層(或底層)”命令或者單擊工具欄中的置于頂層(或底層)按鈕,則可以把控件置于窗體的最頂層(或底層)。在代碼中將控件置于窗體頂層或底層。7.2 控件使用控件定位在窗體設計器中通過拖動控件進行定位在選中控件之后可以使用箭頭鍵微調,更精確地定位控件通過指定控件的Location屬性來定位控件;既可以手工指定,也可以代碼指定7.2 控件使用控件大小使用鼠標直接拖動控件大小在窗體中選中控件,然后使用Shift+箭頭鍵來微調控件大小在屬性窗口中改變控件的Size屬性值通過代碼來調整Size屬性值通過代碼來調整Bounds屬性值7.2 控件使用控件錨定-Anchor屬性Anchor屬性用來確定此控件與其容器控件的固定關系的。Anchor屬性,可以設定Top、Bottom、Right、Left中的任意幾種。使用Anchor屬性使控件的位置相對于窗體某一邊固定。7.2控件Anchor屬性例如下圖是按鈕Anchor取值為None時,窗口默認和大小改變后的情形7.2控件Anchor屬性下圖是按鈕Anchor取值為Top,Bottom,Left,Right,窗口為改變大小和放大后的情形7.2 控件Dock屬性控件停靠-Dock屬性獲取或設置控件??康礁溉萜鞯哪囊粋€邊緣。例如下圖分別是取值為none(默認)和left的情況7.2 控件Dock屬性下圖分別是取值為bottom和fill的情況fill表示填充滿父容器7.2 控件Dock屬性下圖是文本框控件TextBox的Dock取值為fill的情況(Multiline屬性設置為true)7.2 控件使用控件的Tab鍵順序控件的Tab鍵順序決定了用戶使用Tab鍵切換時的順序。默認情況下,控件的Tab鍵順序就是控件添加到窗體中的順序。7.2 控件使用鍵盤事件處理兩類:第一類是KeyPress事件,當按下的鍵表示的是一個ASCII字符時就會觸發(fā)這類事件,可通過它的
KeyPressEventArgs類型參數(shù)的屬性KeyChar來確定按下鍵的ASCII碼。使用KeyPress事件無法判斷是否按下了修改鍵(例如
Shift,Alt和Ctrl鍵);第二類是KeyUp或KeyDown事件,該類事件有一個KeyEventArgs類型的參數(shù),通過該參數(shù)可以測試是否按下了一些修改鍵、功能鍵等特殊按鍵信息。7.2 控件使用KeyPressEventArgs類的主要屬性(KeyPress事件的參數(shù)類型)Handled:用來獲取或設置一個值,該值指示是否處理過KeyPress事件KeyChar:用來獲取按下的鍵對應的字符,通常是該鍵的ASCII碼7.2 控件使用KeyEventArgs類的主要屬性(KeyUp和KeyDown事件的參數(shù)類型)Alt:用來獲取一個值,該值指示是否曾按下Alt鍵Control:用來獲取一個值,該值指示是否曾按下Ctrl鍵Handled:用來獲取或設置一個值,該值指示是否處理過此事件KeyCode:以Keys枚舉型值返回鍵盤鍵的鍵碼,該屬性不包含修改鍵(Alt、Control和Shift鍵)信息,用于測試指定的鍵盤鍵KeyData:以Keys枚舉類型值返回鍵盤鍵的鍵碼,并包含修改鍵信息,用于判斷關于按下鍵盤鍵的所有信息KeyValue:以整數(shù)形式返回鍵碼,而不是Keys枚舉類型值。用于獲得所按下鍵盤鍵的數(shù)字表示Modifiers:以Keys枚舉類型值返回所有按下的修改鍵(Alt、Control和Shift鍵),僅用于判斷修改鍵信息Shift:用來獲取一個值,該值指示是否曾按下Shift鍵7.2 控件使用鼠標事件處理MouseEnter:在鼠標指針進入控件時發(fā)生。MouseMove:在鼠標指針移到控件上時發(fā)生。事件處理程序接收一個MouseEventArgs類型的參數(shù),該參數(shù)的主要屬性及其含義如下。Button:用來獲取按下的是哪個鼠標按鈕。該屬性是MouseButtons枚舉型的值,取值及含義如下:Left(按下鼠標左按鈕)、Middle(按下鼠標中按鈕)、Right(鼠標右按鈕)、None(沒有按下鼠標按鈕)Clicks:用來獲取按下并釋放鼠標按鈕的次數(shù)Delta:用來獲取鼠標輪已轉動的制動器數(shù)的有符號計數(shù)。制動器是鼠標輪的一個凹口X:用來獲取鼠標所在位置的x坐標Y:用來獲取鼠標所在位置的y坐標7.2 控件使用鼠標事件處理MouseHover:當鼠標指針懸停在控件上時將發(fā)生該事件MouseDown:當鼠標指針位于控件上并按下鼠標鍵時將發(fā)生該事件。MouseWheel:在移動鼠標輪并且控件有焦點時將發(fā)生該事件。MouseUp:當鼠標指針在控件上并釋放鼠標鍵時將發(fā)生該事件。MouseLeave:在鼠標指針離開控件時將發(fā)生該事件7.2 控件事件處理雙擊控件,可處理該控件的常用事件雙擊不同的控件,默認處理的事件是不同的如:Button
默認處理Click
事件TextBox默認處理TextChanged事件Form默認處理FromLoad事件鼠標、鍵盤事件處理舉例新建WinForm應用在窗體上拖入一個Label控件,將其Text屬性設置為“愚人節(jié)快樂!”,自行設置字體大小顏色等,將其Visible屬性設置為false單擊窗體空白處選中窗體,在屬性窗口切換到事件界面,在KeyDown事件后面雙擊處理該事件,然后輸入后面的代碼;同樣的方法處理MouseEnter和MouseLeave事件鼠標、鍵盤事件處理舉例private
void
Form1_KeyDown(object
sender,KeyEventArgse){
if(e.Control&&e.Alt&&e.Shift&&
(e.KeyCode==Keys.A))label1.Visible=true;
else
label1.Visible=false;}private
void
Form1_MouseEnter(object
sender,EventArgse){
Randomrd=new
Random();
this.BackColor=Color.FromArgb(rd.Next(0,256),
rd.Next(0,256),rd.Next(0,256));}private
void
Form1_MouseLeave(object
sender,EventArgse){
this.BackColor=
Color.FromKnownColor(KnownColor.WindowFrame);}限制文本框只能輸入數(shù)字//處理TextBox的
KeyPress事件private
voidtextBox1_KeyPress(objectsender,
KeyPressEventArgs
e){if
(!(e.KeyChar>='0'&&e.KeyChar<='9')&&
e.KeyChar!='\b'&&e.KeyChar!='.') e.Handled=true;//告訴下一個處理者該事件已處理}窗口關閉確認,及MessageBox//處理窗口的FormClosing事件private
voidForm1_FormClosing(objectsender,
FormClosingEventArgs
e){
if
(MessageBox.Show("確定要退出嗎?","確認",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)
==DialogResult.No)
{ e.Cancel=true;}}7.3 基本控件LabelButtonRadioButtonCheckBoxTextBoxListBoxComboBoxPictureBoxProgressBarGroupBoxMonthCalendar7.3 基本控件LabelLabel是最簡單最基本的一個控件。它通常用于顯示靜態(tài)文本,比如為其他控件顯示描述性信息或根據(jù)應用程序的狀態(tài)顯示相應的提示信息,一般不需要對標簽進行事件處理。7.3 基本控件LabelLabel常用屬性有:Text:設置標簽中顯示的說明文字Size:設置標簽大小AutoSize:用來獲取或設置一個值,該值指示是否自動調整控件的大小以完整顯示其內(nèi)容。取值為true時,控件將自動調整到剛好能容納文本時的大小,取值為false時,控件的大小為設計時的大小。默認值為false。BackColor:用來獲取或設置控件的背景色。當該屬性值設置為Color.Transparent時,標簽將透明顯示,即背景色不再顯示出來。Enabled:用來設置或返回控件的狀態(tài)。值為true時允許使用控件,值為false時禁止使用控件,此時標簽呈暗淡色,一般在代碼中設置。7.3 基本控件ButtonButton常用屬性。Image:設置顯示在按鈕上的圖像FlatStyle:設置按鈕的外觀,即定義如何繪制控件的邊緣,取值為枚舉值:Flat(平面的)PopUp(由平面到凸起)Standard(三維邊界)System(根據(jù)操作系統(tǒng)決定)TextAlign指定按鈕文字的對齊方式;7.3 基本控件Button常用事件:Click:當用戶用鼠標左鍵單擊按鈕控件時觸發(fā)MouseDown:當用戶在按鈕控件上按下鼠標按鈕時觸發(fā)MouseUp:當用戶在按鈕控件上釋放鼠標按鈕時觸發(fā)MouseMove:當用戶在按鈕上移動鼠標時觸發(fā)Button舉例:“抓悟空”小游戲
private
voidbutton1_MouseMove(objectsender,MouseEventArgse)
{
Size
s=this.ClientSize;//除窗口控制欄外的客戶區(qū)
Button
btn=senderas
Button;//類似于強制類型轉換
Random
r=new
Random();
int
x,y;
x=r.Next(0,s.Width-btn.Width);//注意最大取值
y=r.Next(0,s.Height-btn.Height);
btn.Location
=new
Point(x,y);//設置按鈕左上角的位置}Button舉例:“抓悟空”小游戲
private
voidbutton1_Click(objectsender,EventArgse)
{
MessageBox.Show("恭喜你抓到了!");
}7.3 基本控件RadioButtonRadioButton常用屬性:CheckAlign 設置單選按鈕的對齊方式,即文字與小圓圈的位置關系;Checked:用來確定單選按鈕是否被選擇,該屬性很有用;Text:用來設置或返回單選按鈕控件內(nèi)顯示的文本,該屬性也可以包含訪問鍵,即前面帶有“&”符號的字母,這樣用戶就可以通過同時按Alt鍵和訪問鍵來選中控件。7.3 基本控件RadioButtonRadioButton主要事件有:CheckedChanged:改變單選框Checked屬性時觸發(fā)。MouseDown:按下鼠標時觸發(fā)。MouseDown和Click事件的區(qū)別MouseDown:按下鼠標時觸發(fā)(還未松開鼠標即觸發(fā))。Click:按下鼠標然后松開后才觸發(fā)。7.3 基本控件RadioButtonRadioButton分組規(guī)則:同一個容器中的RadioButton
默認為一組典型的容器包括:Form,GroupBox,Panel,TabControl等RadioButton舉例RadioButton舉例private
voidbutton1_Click(objectsender,EventArgse){if
(radioButton1.Checked)labelResult.Text="恭喜你,答對了!";else
if(radioButton4.Checked){
labelResult.Text="場外求助..."; radioButton4.Enabled=false;}else labelResult.Text="很遺憾,你答錯了!";}7.3 基本控件CheckBoxCheckBox主要屬性有:Checked:獲取或設置復選框是否選中。但與單選按鈕不同之處是,復選框可以支持3種狀態(tài)(增加一種不確定狀態(tài))。CheckState:用來設置或返回復選框的狀態(tài),有三種可能:Checked,Unchecked,Indeterminate(未被選中也未被清除,且顯示禁用復選標記)。復選框處于選中或不確定狀態(tài)時,Checked屬性都為true。Appearance:當復選框的Appearance屬性設置成Button時,不確定狀態(tài)是平面按鈕,選中狀態(tài)是按下的按鈕,未選定狀態(tài)是凸起按鈕。TextAlign:用來設置控件中文字的對齊方式,有9種選擇7.3 基本控件CheckBox主要事件有:CheckedChanged:改變復選框Checked屬性時觸發(fā)。CheckStateChanged:改變復選框CheckedState屬性時觸發(fā)。CheckBox舉例當用戶選某項時,該項文字加粗變綠點擊“確定”,提示“您選擇了:…”確定按鈕單擊事件處理代碼
private
voidbutton1_Click(objectsender,EventArgse)
{ string
s="";
if(this.checkBox1.Checked){s=s+this.checkBox1.Text+"\n";
}
if(this.checkBox2.Checked){s=s+this.checkBox2.Text+"\n";
}
if(this.checkBox3.Checked)
{s=s+this.checkBox3.Text+"\n";
}
if(this.checkBox4.Checked){s=s+this.checkBox4.Text+"\n";
}
MessageBox.Show(“您選擇了:\n"+s);
}CheckBoxCheckedChanged
事件處理代碼(以checkBox1為例)
private
void
checkBox1_CheckedChanged(object
sender,EventArgse)
{
if(this.checkBox1.Checked)
{
this.checkBox1.Font=
new
Font(this.checkBox1.Font,FontStyle.Bold);
this.checkBox1.ForeColor=Color.Green;
}
else
{
this.checkBox1.Font=
new
Font(this.checkBox1.Font,FontStyle.Regular);
this.checkBox1.ForeColor=Color.Black;
}
}確定按鈕單擊事件處理代碼:高效寫法
private
voidbutton1_Click(objectsender,EventArgse)
{
CheckBox[]cbs=new
CheckBox[4]{this.checkBox1,
this.checkBox2,this.checkBox3,this.checkBox4};
string
s="";
foreach(CheckBoxcincbs)
{
if(c.Checked)
{s=s+c.Text+"\n";
}
}
MessageBox.Show("您選擇了:\n"+s);
}CheckBoxCheckedChanged
事件處理代碼(多個控件用同一個事件處理方法)
private
void
checkBox1_CheckedChanged(object
sender,EventArgse)
{
CheckBox
cb=senderas
CheckBox;//sender就是產(chǎn)生事件的對象
if(cb.Checked)
{cb.Font=new
Font(cb.Font,FontStyle.Bold);cb.ForeColor=Color.Green;
}
else
{cb.Font=new
Font(cb.Font,FontStyle.Regular);cb.ForeColor=Color.Black;
}
}1、先雙擊checkBox1寫出其CheckedChanged處理代碼2、按著Ctrl鍵同時選中其他checkBox,在其事件CheckedChanged,右邊選擇checkBox1_CheckedChanged方法7.3 基本控件TextBoxTextBox是除按鈕控件外最常用的控件,常用于接收文本輸入。7.3 基本控件TextBoxTextBox常用屬性如下:Enabled:獲取或者設置控件是否可以響應用戶操作。Multiline:獲取或者設置控件是否顯示為多行文本框。TextAlign:獲取或者設置控件中文本的對齊方式;Visible:獲取或者設置控件是否可見。WordWrap:獲取或設置控件在必要時是否自動換行。Text:該屬性是文本框最重要的屬性,因為要顯示的文本就包含在Text屬性中。若需要對文本作更豐富的處理,則可以采用RichTextBox控件。MaxLength:用來設置文本框允許輸入字符的最大長度,該屬性值為0時,不限制輸入的字符數(shù)。ReadOnly:獲取或者設置文本框是否允許用戶輸入7.3 基本控件TextBoxTextBox常用屬性如下:TextLength:獲取控件中文本的長度。PasswordChar:是一個字符串類型,允許設置一個字符,運行程序時,將輸入到Text的內(nèi)容全部顯示為該屬性值,從而起到保密作用,通常用來輸入密碼。SelectionLength:用來獲取或設置文本框中選定的字符數(shù)。只能在代碼中使用,值為0時,表示未選中任何字符。SelectionStart:用來獲取或設置文本框中選定的文本起始點。只能在代碼中使用,第一個字符的位置為0,第二個字符的位置為1,依此類推。SelectedText:用來獲取或設置一個字符串,該字符串指示控件中當前選定的文本。只能在代碼中使用7.3 基本控件TextBoxTextBox常用方法如下:Clear:清除文本框中的所有文本,調用格式為:textBox1.Clear();Copy:把文本框中的當前選擇文字復制到剪貼板,調用格式:textBox1.Copy();Cut:把文本框中的當前選擇文字移動到剪貼板,調用格式:textBox1.Cut();Paste:使用剪貼板中的內(nèi)容替換文本框中當前選擇的內(nèi)容,調用格式:textBox1.Paste();Focus:為文本框設置焦點。如果焦點設置成功,值為true,否則為false。調用格式為:textBox1.Focus();SelectAll:選擇文本框中的所有內(nèi)容,調用格式:textBox1.SelectAll();7.3 基本控件TextBox常用事件鼠標依次點擊TextBox1和TextBox2,TextBox1的事件觸發(fā)順序為:EnterGotFocusLostFocusLeaveValidatingValidated關于TextBox的Validating事件處理參數(shù)為:
(objectsender,CancelEventArgse)
設置e.Cancel=true,將取消光標的離開,使控件重新獲得輸入焦點TextBox的Validating事件處理舉例private
voidtextBox1_Validating(objectsender,CancelEventArgs
e){
string
s=this.textBox1.Text;
if(s.Length>0&&!s.Contains("@"))
{ MessageBox.Show("您輸入的郵件地址有誤,請重試!"); e.Cancel=true;}}TextBox通常處理其TextChanged事件可實時處理用戶的每個字符輸入private
voidtextBox1_TextChanged(objectsender,EventArgs
e){
textBox2.Text=textBox1.Text;}7.3 基本控件ListBoxListBox常用屬性:Items:保存列表框中顯示的項,通過這個屬性訪問項或對這些項進行操作Items[i]:返回第i個項,類型為objectSelectionMode:指定列表框中項的選擇方式,默認情況下列表框一次只能選擇一項。取值如下:MultiExtended:允許一次選擇多項并使用Shift和Ctrl鍵來實現(xiàn)擴展選擇MultiSimple:允許一次選擇多項,但只能通過單擊或空格來選擇None:不能在列表框中選擇One:一次只選擇一項(默認)Text:返回當前選定項的文本。該屬性用來獲取或搜索列表框中當前選定項的文本。7.3 基本控件ListBoxListBox常用屬性:獲取所選項的索引SelectedIndex:用來獲取或設置ListBox控件中當前選定項的從零開始的索引。如果未選定任何項,則返回-1。對于只能選擇一項的ListBox控件,可使用此屬性確定列表框中選定的項的索引。若列表框的SelectionMode屬性設置為SelectionMode.MultiSimple
或SelectionMode.MultiExtended,并在該列表中選定多項,此時該屬性只能獲得所有被選項中的第一個項SelectedIndices:在列表框允許選擇多項時用來獲取當前所有選定項的索引集,這是一個SelectedIndexCollection類實例SelectedIndices[i]:被選中的第i個項的索引SelectedIndices.Count:被選中索引集的個數(shù)7.3 基本控件ListBoxListBox常用屬性:獲取所選項SelectedItem:在列表框只允許選擇一項時用來獲取當前所選擇項SelectedItems:在列表框允許選擇多項時用來獲取當前選擇的多個項的集合,這是一個SelectedObjectCollection類實例SelectedItems.Count:返回選中個數(shù)SelectedItems[i]:被選中的第i個項7.3 基本控件ListBoxListBox常用方法Items.Add:向列表框的底部增添一個列表項,調用格式:listBox1.Items.Add(s):把參數(shù)s添加到列表框中Items.AddRange:將一個數(shù)組添加到列表框,調用格式listBox1.Items.Add(array);每個數(shù)組元素作為一個項Items.Insert:在列表框中指定位置插入一個列表項,調用格式:ListBox對象.Items.Insert(n,s):參數(shù)n代表要插入的項的位置索引,索引不能小于0,不能大于當前項目數(shù);參數(shù)s代表要插入的項,其功能是把s插入到listBox控件指定的列表框的索引為n的位置處。但是需要注意的是:在Sorted屬性為true時,Insert方法插入的項不能被正確排序。Items.Remove方法:刪除指定項,調用格式:Remove(item);Items.RemoveAt方法:刪除指定索引的項,調用格式:listBox1.Items.RemoveAt(index);參數(shù)為索引7.3 基本控件ListBox常用方法Items.Clear:清除列表框中的所有項。調用格式:listBox1.Items.Clear();SetSelected:用來選中某一項或取消對某一項的選擇,調用格式:ListBox1.SetSelected(n,b):如果參數(shù)b的值是true,則在列表框中選中索引為n的列表項,如果參數(shù)b的值是false,則索引為n的列表項未被選中。GetSelected:返回一個值,該值表明是否選定了指定的項FindString:查找以指定字符串開頭的項,找到則返回該項的索引值,否則返回ListBox.NoMatches
FindStringExact:精確查找內(nèi)容等于指定字符串的項,找到則返回該項的索引值,否則返回ListBox.NoMatches7.3 基本控件ListBox大批量更新數(shù)據(jù)方法:listBox1.BeginUpdate()//插入刪除等listBox1.EndUpdate()可防止閃爍7.3 基本控件ListBox控件常用事件有ClickDoubleClickSelectedIndexChangedListBox舉例ListBox舉例//多個列表項目的刪除private
voidbtnDel_Click(objectsender,EventArgse){//for(inti=0;i<listBox1.SelectedItems.Count;i++)
//listBox1.Items.Remove(listBox1.SelectedItems[i]);//是否可行?
//for(inti=0;i<listBox1.SelectedIndices.Count;i++)//listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);//是否可行?int
n=listBox1.SelectedIndex;while
(listBox1.SelectedItems.Count>0)
listBox1.Items.Remove(listBox1.SelectedItems[0]);}ListBox舉例//多個列表項目的上移private
voidbtnMoveUp_Click(objectsender,EventArgse){intn=listBox1.SelectedIndex;if(n>0){foreach(intiinlistBox1.SelectedIndices){listBox1.Items.Insert(i-1,listBox1.Items[i]);listBox1.Items.RemoveAt(i+1);listBox1.SetSelected(i-1,true);}}}7.3 基本控件ComboBoxComboBox:即組合框,由一個文本框和一個下拉列表組成可以在文本框中直接輸入也可以從下拉列表中選擇其中的某一個選項,不能多選(故它無SelectionMode屬性)對于只選一個選項的場合,ComboBox控件的優(yōu)勢在于占用空間少。ComboBox究竟是否能夠接受用戶輸入,這取決于設置。ComboBox的顯示風格也可以設置,這是通過DropDownStyle屬性來實現(xiàn)。7.3 基本控件ComboBoxComboBox常用屬性:ComboBox常用屬性:(1)DropDownStyle屬性該屬性用于設置組合框的樣式。有3種可選值:Simple:上面為一個TextBox,下面為一個ListBox,二者組合,可以輸入。DropDown:具有下拉列表框,可以選擇,也可以直接輸入選擇項中不存在的文本。該值是默認值。DropDownList:具有下拉列表框,只能選擇已有可選項中的值,不能輸入其他的文本。ComboBox常用屬性(2)MaxDropDownItems屬性該屬性用于設置下拉列表框中最多顯示列表項的個數(shù)。有更多的項,則產(chǎn)生垂直滾動條7.3 基本控件ComboBoxComboBox常用事件7.3 基本控件ComboBoxComboBox常用方法:和ListBox類似,如listBox1.Items.Add()、
listBox1.Items.Insert()等Text屬性為ComboBox中當前內(nèi)容(1)創(chuàng)建一個Windows窗體應用程序,在窗體上添加如圖所示的控件。其中,將兩個ComboBox控件分別命名為cboCountry和cboCity,“確定”按鈕命名為btnOk。(2)更改兩個ComboBox控件的DropDownStyle屬性為DropDownList。為cboCountry有Items添加如下內(nèi)容:中國美國英國ComboBox舉例
7.3.8組合框控件
(3)編寫程序代碼,實現(xiàn)如下的功能:當cboCountry中,選擇相應的國家,在cboCity中顯示該國家的部分城市。
7.3.8組合框控件
(4)程序完整代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;
namespaceUseComboBox{
public
partial
classForm1:Form{
7.3.8組合框控件
publicForm1(){ InitializeComponent();}private
voidForm1_Load(objectsender,EventArgse){ cboCountry.SelectedIndex=0;}
7.3.8組合框控件
privatevoidcboCountry_SelectedIndexChanged(objectsender,EventArgse){
switch(cboCountry.SelectedIndex){
case0:cboCity.Items.Clear();cboCity.Items.Add("北京");cboCity.Items.Add("上海");cboCity.Items.Add("天津");cboCity.SelectedIndex=0;
break;
7.3.8組合框控件
case1:cboCity.Items.Clear();cboCity.Items.Add("華盛頓");cboCity.Items.Add("紐約");cboCity.Items.Add("芝加哥");cboCity.SelectedIndex=0;
break;
case2:cboCity.Items.Clear();cboCity.Items.Add("倫敦");cboCity.Items.Add("曼徹斯特");cboCity.Items.Add("考文垂");cboCity.SelectedIndex=0;
break;
7.3.8組合框控件
default:cboCity.Items.Clear();
break;}}
privatevoidbtnOk_Click(objectsender,EventArgse){
stringstrSelect=cboCountry.SelectedItem.ToString()+":"+cboCity.SelectedItem.ToString();
MessageBox.Show(strSelect,"國家城市列表",
MessageBoxButtons.OK,MessageBoxIcon.Information);}}}
7.3.8組合框控件
運行程序,可以實現(xiàn)在任意選擇國家組合框中的項,右側的城市也隨之改變,如圖9-27所示。單擊“確定”按鈕,通過MessageBox提示框顯示所選的內(nèi)容,如圖9-28所示。說明:代碼在Form1窗體的Load事件中對cboCountry控件的SelectedIndex屬性賦值,使其默認選擇一個選擇,避免了運行程序時組合框是所選內(nèi)容為空。隨后的代碼處理了cboCountry控件的SelectedIndexChanged事件,根據(jù)不同的國家添加不同的城市名稱。7.3 基本控件PictureBoxPictureBox常用屬性:Image:用來設置控件要顯示的圖像。設計時確定:設計時單擊Image屬性,在其后將出現(xiàn)【…】按鈕,單擊該按鈕將出現(xiàn)一個【打開】對話框,在該對話框中找到相應的圖形文件后單擊【確定】按鈕。代碼方式:產(chǎn)生一個Bitmap類的實例并賦值給Image屬性。形式如下:Bitmapp=newBitmap(圖像文件名);pictureBox1.Image=p;代碼方式:通過Image.FromFile方法直接從文件中加載。形式如下:pictureBox1.Image=Image.FromFile(圖像文件名);代碼方式:pictureBox1.Load("圖片路徑");清除圖像:pictureBox1.Image=null;7.3 基本控件PictureBoxPictureBox常用屬性:ImageLocation:設置圖片框顯示的圖片的路徑pictureBox1.ImageLocation="圖片路徑";
pictureBox1.Load();7.3 基本控件PictureBoxPictureBox常用屬性:SizeMode:用來決定圖像的顯示模式。其取值如下:AutoSize:調整控件PictureBox大小,使其等于所包含的圖像大小。CenterImage:如果控件PictureBox比圖像大,則圖像將居中顯示。如果圖像比控件大,則圖片將居于控件中心,而外邊緣將被剪裁掉。Normal:圖像被置于控件的左上角。如果圖像控件大,則超出部分被剪裁掉。StretchImage:控件中的圖像被拉伸或收縮,以適合控件的大小。Zoom:圖像維持縱橫比放大或縮小以適應控件大小PictureBox舉例PictureBox舉例private
voidbtnOpen_Click(objectsender,EventArgse){ this.openFileDialog1.Filter=
"圖像文件(*.jpg;*.bmp;*.png;*.gif)|*.jpg;*.bmp;*.png;*.gif"; if(this.openFileDialog1.ShowDialog()==DialogResult.OK) {
this.pictureBox1.Image=
Image.FromFile(this.openFileDialog1.FileName); }
}private
voidbtnClear_Click(objectsender,EventArgse){ this.pictureBox1.Image=null;}7.3 基本控件ProgressBar
ProgressBar
控件又稱進度條控件,常用于需要大量時間的場合,用它來指示當前處理進度、完成的百分比,告訴用戶程序正在運行。7.3 基本控件ProgressBar
ProgressBar常用屬性:Maximum:設置或返回進度條的最大值,默認值為100。Minimum:設置或返回進度條的最小值,默認值為0。Value:設置或返回進度條的當前值。Step:設置或返回一個值,該值用來決定每次調用PerformStep方法時,Value屬性增加的幅度。Style:該屬性是進度條控件的一個常用屬性,用了決定控件運行時的外觀,其取值為Blocks、Continuous、Marquee。以Blocks使用體驗最好。7.3 基本控件ProgressBar
ProgressBar常用方法:Increment:按該方法的參數(shù)指定的值增加進度條的值,調用的一般格式如下:progressBar1.Increment(n);其功能是把progressBar1的Value屬性值增加n,n為整數(shù)。PerformStep:按step屬性值來增加進度條的Value屬性值,調用的一般格式如下:progressBar1.PerformStep();ProgressBar舉例ProgressBar舉例ProgressBar舉例ProgressBar舉例
public
partial
class
ProgressBarTest:Form
{ bool
running=false;
private
voidProgressBarTest_Load(objectsender,EventArgse)
{
this.timer1.Interval=50;
this.timer1.Enabled=false;
gressBar1.Step=1;
} …ProgressBar舉例
private
voidtimer1_Tick(objectsender,EventArgse)
{
gressBar1.PerformStep();
this.Text=gressBar1.Value.ToString()+"%";
if(gressBar1.Value==100)
{
this.btnStartPause.Text="已完成";
this.timer1.Stop();
}
}ProgressBar舉例
private
voidbtnStartPause_Click(objectsender,EventArgse)
{
Buttonbtn=senderas
Button;
if(running==false)
{
this.timer1.Start();running=true;btn.Text="暫停";
}
else
{
this.timer1.Stop();running=false;btn.Text="繼續(xù)";
}
}7.3.6基本控件MaskedTextBox和TextBox基本相同。但通過設置Mask屬性可以設置文本框可接受數(shù)據(jù)的格式Mask屬性的取值參見課本P204Text屬性獲取輸入框內(nèi)容MaskedTextBoxMask屬性設置NumericUpDown控件可上下改變數(shù)值,也可輸入數(shù)字Value屬性為其數(shù)值Minimum、Maximum屬性決定了其數(shù)值范圍(必須為非負整數(shù)當其數(shù)值改變后將觸發(fā)ValueChanged事件滾動條HScrollBar、VScrollBar控件在“所有控件”里面滑塊的位置代表其Value屬性的值Minimum、Maximum屬性決定了其數(shù)值范圍(必須為非負整數(shù)SmallChange屬性:單擊兩邊箭頭Value改變的值LargeChange屬性:單擊滑塊兩邊Value改變的值注意:在VS2010中,Value屬性要想取得最大值Maximum,LargeChange必須等于1(默認為10),否則Value最大取值只能到Maximum–LargeChange+1。(Bug?)滑塊的滑動將觸發(fā)Scroll事件HScrollBar、NumericUpDown舉例注意:RGB顏色的每個分量最大值為255HScrollBar、NumericUpDown舉例 private
voidhScrollBar1_Scroll(objectsender,ScrollEventArgse)
{
this.numericUpDown1.Value=this.hScrollBar1.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
voidnumericUpDown1_ValueChanged(objectsender,EventArgse)
{
this.hScrollBar1.Value=(int)this.numericUpDown1.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}HScrollBar、NumericUpDown舉例 private
void
hScrollBar2_Scroll(object
sender,ScrollEventArgse)
{
this.numericUpDown2.Value=this.hScrollBar2.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
void
numericUpDown2_ValueChanged(object
sender,EventArgse)
{
this.hScrollBar2.Value=(int)this.numericUpDown2.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}HScrollBar、NumericUpDown舉例 private
void
hScrollBar3_Scroll(object
sender,ScrollEventArgse)
{
this.numericUpDown3.Value=this.hScrollBar3.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
void
numericUpDown3_ValueChanged(object
sender,EventArgse)
{
this.hScrollBar3.Value=(int)this.numericUpDown3.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}7.3 基本控件GroupBoxGroupBox是一個容器控件,用于對控件進行邏輯分組。其典型的用法之一就是給RadioButton控件分組。7.3
基本控件GroupBoxGroupBox常用屬性如下:Text:為分組框設置標題BackColor:設置分組框背景顏色BackgroundImage:設置分組框背景圖像AutoSize:設置分組框是否可以根據(jù)其內(nèi)容調整大小。AutoSizeMode:獲取或設置啟用AutoSize屬性時分組框的行為方式。屬性值為AutoSizeMode枚舉值:GrowAndShrink,根據(jù)內(nèi)容增大或縮小;GrowOnly(默認),可根據(jù)其內(nèi)容任意增大,但不會縮小到Size屬性值以下。Controls:分組框中包含的控件集合。可以使用該屬性的Add,Clear等方法。7.3 基本控件PanelPanel
也是一個容器控件,類似于GroupBox,但其可以滾動。GroupBox、Panel舉例7.3 基本控件MonthCalendarMonthCalendar在窗體中將顯示為一個日歷界面,可以選擇一個日期區(qū)間。7.3 基本控件MonthCalendarMonthCalendar常用屬性:MaxSelectionCount:單擊日歷頁面的日期就可以在日歷控件中選擇一個日期,默認情況下最多允許選擇7天,可以通過修改這個屬性來改變這個天數(shù)限定。SelectionStart:一個DateTime值,指定第一個選擇的日期SelectionEnd:一個DateTime值,指定最后一個選擇的日期SelectionRange:一個SelectionRange對象,代表控件中所選擇的日期,它具有兩個屬性Start,一個DateTime值,代表范圍內(nèi)的第一天;End,一個DateTime值,代表范圍內(nèi)的最后一天。7.3 基本控件MonthCalendarMonthCalendar常用屬性:MinDate:控制日歷控件允許的最早的有效日期;MaxDate:控制日歷控件允許的最晚的有效日期。ShowToday:指定日期是否可以顯示在日歷的底部,默認值為true。ShowTodayCircle:指定是否在當前日期周圍畫一個圈,默認為true。TodayDate:設置控件顯示的日期,默認情況下顯示系統(tǒng)日期。ShowWeekNumbers:指定是否在日歷中顯示周數(shù),默認為false。7.3 基本控件MonthCalendarMonthCalendar主要事件:DateChanged:日期區(qū)間改變后觸發(fā)MonthCalendar舉例//雙擊控件處理DateChanged事件private
voidmonthCalendar1_DateChanged(objectsender,DateRangeEventArgse){
this.label1.Text=this.monthCalendar1.SelectionStart.ToString("yyyy年M月d日")+"-"+this.monthCalendar1.SelectionEnd.ToString("yyyy年M月d日");
}7.3 基本控件DateTimePickerDateTimePicker控件可讓用戶選擇一個日期Value屬性代表其日期值,DateTime類型(time部分為當前系統(tǒng)時間)默認事件為ValueChanged事件,選擇的日期改變后觸發(fā)DateTimePicker舉例//雙擊控件處理其ValueChanged事件private
voiddateTimePicker1_ValueChanged(objectsender,EventArgse){ this.label1.Text=this.dateTimePicker1.Value.ToString();}7.4 常用組件TimerTimer用于計時,并以指定的間隔循環(huán)往復的執(zhí)行某個動作,該控件在運行時不可見。通過計時處理可以實現(xiàn)各種復雜的動作,例如動畫效果等。Timer組件的常用屬性:Enable:定時器事件是否處于運行狀態(tài)。默認情況下為false,即定時器不開啟;Interval:指定定時器控件的時間間隔,單位為毫秒。如它的值設置為500,則將每隔0.5秒發(fā)生一個Tick事件。7.4 常用組件TimerTimer組件的常用方法:Start:啟動時鐘,即把Enable屬性設為true;Stop:停止時鐘,把Enable屬性設為false。Timer組件的常用事件:Tick:在定時器被開啟并且指定的時間間隔(即Interval)到達時觸發(fā)這個事件??梢酝ㄟ^捕捉該事件來進行代碼操作。Timer舉例:數(shù)字時鐘
private
voidTimerTest_Load(objectsender
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6《比例尺》大單元整體設計(教學設計)-2024-2025學年六年級上冊數(shù)學冀教版
- 2023二年級數(shù)學上冊 七 分一分與除法第4課時 分香蕉配套教學設計 北師大版
- 2023三年級數(shù)學上冊 二 觀察物體第1課時 看一看(一)教學設計 北師大版
- 畢業(yè)論文課題答辯匯報
- 7 中華民族一家親 第一課時 (教學設計)-部編版道德與法治五年級上冊
- Unit5 Drink Lesson 1(教學設計)-2023-2024學年人教新起點版英語一年級下冊
- 胰體尾脾切除護理
- Unit 3 Lesson 2教學設計 2024-2025學年冀教版(2024)七年級英語上冊
- 2024秋九年級化學上冊 第三單元 物質構成的奧秘 課題2 原子的結構第2課時 原子核外電子的排布 離子教學設計(新版)新人教版
- 6《騎鵝旅行記(節(jié)選)》教學設計-2023-2024學年統(tǒng)編版語文六年級下冊
- SY∕T 7298-2016 陸上石油天然氣開采鉆井廢物處置污染控制技術要求
- 電梯門系統(tǒng)教學課件
- 四年級下冊數(shù)學課件-第四單元小數(shù)點移動引起小數(shù)大小的變化 課時(2)人教新課標 (共20張PPT)
- 核科普知識學習考試題庫(400題)
- 六年級數(shù)學試卷講評課教學設計(共16篇)
- 線面平行判定定理
- 輪扣式模板支撐架專項施工方案
- abb繼電保護615系列操作手冊
- 甘肅省審圖機構
- 挖掘機部件英語對照表
- 辦公室口號大全
評論
0/150
提交評論