![c#Windows窗體應(yīng)用程序設(shè)計_第1頁](http://file4.renrendoc.com/view/4484181ddc2d727f4f7a6469211a05eb/4484181ddc2d727f4f7a6469211a05eb1.gif)
![c#Windows窗體應(yīng)用程序設(shè)計_第2頁](http://file4.renrendoc.com/view/4484181ddc2d727f4f7a6469211a05eb/4484181ddc2d727f4f7a6469211a05eb2.gif)
![c#Windows窗體應(yīng)用程序設(shè)計_第3頁](http://file4.renrendoc.com/view/4484181ddc2d727f4f7a6469211a05eb/4484181ddc2d727f4f7a6469211a05eb3.gif)
![c#Windows窗體應(yīng)用程序設(shè)計_第4頁](http://file4.renrendoc.com/view/4484181ddc2d727f4f7a6469211a05eb/4484181ddc2d727f4f7a6469211a05eb4.gif)
![c#Windows窗體應(yīng)用程序設(shè)計_第5頁](http://file4.renrendoc.com/view/4484181ddc2d727f4f7a6469211a05eb/4484181ddc2d727f4f7a6469211a05eb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Windows窗體應(yīng)用程序設(shè)計8.1窗體設(shè)計8.2常用的控件設(shè)計8.3多文檔窗體8.4窗體設(shè)計的事件機(jī)制1a窗體設(shè)計窗體(Form)是一個窗口或?qū)υ捒?,是存放各種控件(包括標(biāo)簽、文本框、命令按鈕等)的容器,可用來向用戶顯示信息。8.1.1創(chuàng)建Windows窗體應(yīng)用程序的過程添加一個窗體的操作步驟是:選擇“項目”|“添加Windows窗體”菜單命令,在出現(xiàn)的“添加新項”對話框中,選中“Windows窗體”,輸入相應(yīng)的名稱(這里為Form2.cs),單擊“添加”按鈕。一個Windows應(yīng)用程序可以包含多個窗體。2a窗體類型在C#中,窗體分為如下兩種類型:(1)普通窗體,也稱為單文檔窗體(SDI),前面所有創(chuàng)建的窗體均為普通窗體。普通窗體又分為如下兩種:
●模式窗體。這類窗體在屏幕上顯示后用戶必須響應(yīng),只有在它關(guān)閉后才能操作其他窗體或程序。
●無模式窗體。這類窗體在屏幕上顯示后用戶可以不必響應(yīng),可以隨意切換到其他窗體或程序進(jìn)行操作。通常情況下,當(dāng)建立新的窗體時,都默認(rèn)設(shè)置為無模式窗體。(2)MDI父窗體,即多文檔窗體,其中可以放置普通子窗體。3a窗體的常用屬性1.布局屬性2.窗口樣式屬性3.外觀樣式屬性4.行為屬性8.1.4窗體的常用事件8.1.5窗體的常用方法4a1.Form1窗體:(1)設(shè)計界面(2)事件過程:Form1.cs文件://引用部分usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;5anamespaceProj8_1{publicpartialclassForm1:Form//從Form類繼承Form1窗體{publicForm1() //Form1類構(gòu)造函數(shù){ InitializeComponent(); //調(diào)用初始化方法,其代碼在Form1.Designer.cs文件中}
privatevoidbutton1_Click(objectsender,EventArgse){Formmyform=newForm1_1(); //定義Form1_1類對象 myform.ShowDialog(); //以模式窗體方式調(diào)用}
privatevoidbutton2_Click(objectsender,EventArgse){Formmyform=newForm1_2(); //定義Form1_2類對象 myform.Show(); //以無模式窗體方式調(diào)用}}}6aForm1.Designer.cs文件:namespaceProj8_1{partialclassForm1{///<summary>///必需的設(shè)計器變量。///</summary>privateSystem.ComponentModel.IContainercomponents=null;///<summary>///清理所有正在使用的資源。///</summary>///<paramname="disposing">如果應(yīng)釋放托管資源,為true; ///否則為false。</param>protectedoverridevoidDispose(booldisposing) //重寫基類Dispose()方法{if(disposing&&(components!=null)) {components.Dispose(); } base.Dispose(disposing);//調(diào)用基類的Dispose()方法 }7a#regionWindows窗體設(shè)計器生成的代碼///<summary>///設(shè)計器支持所需的方法-不要///使用代碼編輯器修改此方法的內(nèi)容。///</summary>privatevoidInitializeComponent() //初始化方法{this.button1=newSystem.Windows.Forms.button();this.button2=newSystem.Windows.Forms.button();this.SuspendLayout();
//button1this.button1.Font=newSystem.Drawing.Font("宋體",9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point,((byte)(134)));this.button1.Location=newSystem.Drawing.Point(28,21);this.button1.Name="button1";this.button1.Size=newSystem.Drawing.Size(117,33);this.button1.TabIndex=0;this.button1.Text="調(diào)用模式窗體";this.button1.UseVisualStyleBackColor=true;
this.button1.Click+=newSystem.EventHandler(this.button1_Click);8a//button2this.button2.Font=newSystem.Drawing.Font("宋體",9F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.button2.Location=newSystem.Drawing.Point(28,69);this.button2.Name="button2";this.button2.Size=newSystem.Drawing.Size(117,33);this.button2.TabIndex=1;this.button2.Text="調(diào)用無模式窗體";this.button2.UseVisualStyleBackColor=true;
this.button2.Click+=newSystem.EventHandler(this.button2_Click);//Form1this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(169,128);this.Controls.Add(this.button2);this.Controls.Add(this.button1);this.Name="Form1";
this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen;this.Text="Form1";this.ResumeLayout(false);}9a #endregion privateSystem.Windows.Forms.buttonbutton1;//私有字段 privateSystem.Windows.Forms.buttonbutton2; //私有字段}}10a2.Form1_1窗體:(1)設(shè)計界面(2)事件過程:無3.Form1_1窗體:(1)設(shè)計界面(2)事件過程:無11aProgram.cs文件:usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceProj8_1{staticclassProgram{ ///<summary> ///應(yīng)用程序的主入口點。 ///</summary> [STAThread] staticvoidMain() {Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(newForm1());//啟動窗體為Form1 }}}12a按F5鍵或單擊工具欄中的按鈕運(yùn)行本項目。上機(jī)調(diào)試運(yùn)行結(jié)果。13a窗體上各事件的引發(fā)順序當(dāng)一個窗體啟動時,執(zhí)行事件過程的次序如下:(1)本窗體上的Load事件過程。(2)本窗體上的Activated事件過程。(3)本窗體上的其他Form級事件過程。(4)本窗體上包含對象的相應(yīng)事件過程。一個窗體被卸載時,執(zhí)行事件過程的次序如下:(1)本窗體上的Closing事件過程。(2)本窗體上的FormClosing事件過程。(3)本窗體上的Closed事件過程。(4)本窗體上的FormClosed事件過程。14a焦點與Tab鍵次序焦點(Focus)是指當(dāng)前處于活動狀態(tài)的窗體或控件。要將焦點移到當(dāng)前窗體中的textBox1文本框,可以使用以下命令:textBox1.Focus();15a控件概述控件是包含在窗體上的對象,是構(gòu)成用戶界面的基本元素,也是C#可視化編程的重要工具。工具箱中包含了建立應(yīng)用程序的各種控件,根據(jù)控件的不同用途分為若干個選項卡,可根據(jù)用途單擊相應(yīng)的選項卡,將其展開,選擇需要的控件。常用的控件設(shè)計16a大多數(shù)控件共有的基本屬性如下:1)Name屬性2)Text屬性3)尺寸大?。⊿ize)和位置(Location)屬性4)字體屬性(Font)5)顏色屬性(BackColor和ForeColor)6)Cursor屬性7)可見(Visible)和有效(Enabled)屬性17a富文本框控件提供類似MicrosoftWord能夠輸入、顯示或處理具有格式的文本?!纠?.2】設(shè)計一個窗體,說明富文本框的使用方法。Form2窗體:(1)設(shè)計界面(2)事件過程:privatevoidForm2_Load(objectsender,EventArgse){richtextBox1.LoadFile("H:\\C#2005\\ch8\\file.RTF", RichtextBoxStreamType.RichText);}@"H:\C#2005\ch8\file.RTF",18a將本窗體設(shè)計為啟動窗體,運(yùn)行本項目,在富文本框RichtextBox1中顯示H:\C#2005\ch8\file.rtf文件的內(nèi)容。19a分組框控件面板控件20a復(fù)選框控件屬于選擇類控件,用來設(shè)置需要或不需要某一選項功能。在運(yùn)行時,如果用戶用鼠標(biāo)單擊復(fù)選框左邊的方框,方框中就會出現(xiàn)一個“√”符號,表示已選取這個功能了。復(fù)選框的功能是獨(dú)立的,如果在同一窗體上有多個復(fù)選框,用戶可根據(jù)需要選取一個或幾個。主要屬性:Checked:獲取或設(shè)置一個布爾值,該值指示是否已選中控件。如果為True,則指示選中狀態(tài);否則為False(默認(rèn)值)。主要事件:Click21a【例8.3】設(shè)計一個窗體,說明復(fù)選框的應(yīng)用。Form3窗體:(1)設(shè)計界面(2)事件過程:privatevoidbutton1_Click(objectsender,EventArgse){if(checkBox1.Checked&&checkBox3.Checked&& !checkBox2.Checked&&!checkBox4.Checked)MessageBox.Show("您答對了,真的很棒!!!","信息提示", MessageBoxButtons.OK);elseMessageBox.Show("您答錯了,繼續(xù)努力吧!!!","信息提示", MessageBoxButtons.OK);}22a運(yùn)行界面23a單選按鈕控件單選按鈕是多選一,只能從多個選項中選擇一個,各選項間的關(guān)系是互斥的。單選按鈕使用時經(jīng)常用多個控件構(gòu)成一個組,同一時刻只能選擇同一組中的一個單選按鈕,因此,經(jīng)常將單選按鈕放在一個分組框中構(gòu)成一個選項組。24a設(shè)計一個窗體,說明單選按鈕的使用方法。Form4窗體:(1)設(shè)計界面(2)事件過程:privatevoidbutton1_Click(objectsender,EventArgse){if(radiobutton3.Checked)MessageBox.Show("您選對了,這是微軟公司開發(fā)的操作系統(tǒng)", "信息提示",MessageBoxButtons.OK);elseif(radiobutton1.Checked||radiobutton4.Checked)MessageBox.Show("您選錯了,這是程序設(shè)計語言", "信息提示",MessageBoxButtons.OK);elseMessageBox.Show("您選錯了,這是數(shù)據(jù)庫管理系統(tǒng)", "信息提示",MessageBoxButtons.OK);}25a運(yùn)行界面26a圖片框控件用于在窗體的特殊位置上放置圖形信息,也可以在其上放置多個控件,因此它可作為其他控件的容器。主要屬性:Image獲取或設(shè)置圖片框中顯示的圖像。在運(yùn)行時再使用Image.FromFile函數(shù)加載圖像。27a設(shè)計一個窗體,以選擇命令按鈕方式顯示春、夏、秋、冬4個季節(jié)的圖片。Form5窗體:(1)設(shè)計界面(2)事件過程:privatevoidbutton1_Click(objectsender,EventArgse){pictureBox1.Image=Image.FromFile("H:\\C#2005\\ch8\\spring.jpg");}privatevoidbutton2_Click(objectsender,EventArgse){pictureBox1.Image=Image.FromFile("H:\\C#2005\\ch8\\summer.jpg");}privatevoidbutton3_Click(objectsender,EventArgse){pictureBox1.Image=Image.FromFile("H:\\C#2005\\ch8\\fall.jpg");}privatevoidbutton4_Click(objectsender,EventArgse){pictureBox1.Image=Image.FromFile("H:\\C#2005\\ch8\\winter.jpg");}28a29a組合框控件從一個列表中一次只能選取或輸入一個選項,其主要特點是具有帶向下箭頭的方框。在程序運(yùn)行時,按下此按鈕就會下拉出一個列表框供用戶選擇項目。另外,還可以在組合框上方的框中輸入數(shù)據(jù)。組合框的屬性說明DropDownStyle獲取或設(shè)置指定組合框樣式的值??扇∫韵轮抵唬?/p>
DropDown(默認(rèn)值):文本部分可編輯。用戶必須單擊箭頭按鈕來顯示列表部分。DropDownList:用戶不能直接編輯文本部分。用戶必須單擊箭頭按鈕來顯示列表部分。Simple:文本部分可編輯。列表部分總可見。各種樣式的組合框如圖8.19所示。DropDownWidth獲取或設(shè)置組合框下拉部分的寬度(以像素為單位)。DropDownHeight獲取或設(shè)置組合框下拉部分的高度(以像素為單位)。Items表示該組合框中所包含項的集合。SelectedItem獲取或設(shè)置當(dāng)前組合框中選定項的索引。SelectedText獲取或設(shè)置當(dāng)前組合框中選定項的文本。Sorted指示是否對組合框中的項進(jìn)行排序。30aDropDownStyle=SimpleDropDownStyle=DropDown
DropDownStyle=DropDownList31a組合框的Items屬性是最重要的屬性,它是存放組合框中所有項的集合,對組合框的操作實際上就是對該屬性即項集合的操作。Items的屬性說明Count組合框的項集合中項個數(shù)。Items的方法說明Add向ComboBox項集合中添加一個項。AddRange向ComboBox項集合中添加一個項的數(shù)組。Clear移除ComboBox項集合中的所有項。Contains確定指定項是否在ComboBox項集合中。Equqls判斷是否等于當(dāng)前對象。GetType獲取當(dāng)前實例的Type。Insert將一個項插入到ComboBox項集合中指定的索引處。IndexOf檢索指定的項在ComboBox項集合中的索引。Remove從ComboBox項集合中移除指定的項。RemoveAt移除ComboBox項集合中指定索引處的項32a組合框的事件組合框的事件說明Click
在單擊控件時發(fā)生。TextChanged
在Text屬性值更改時發(fā)生。SelectedIndexChanged在SelectedIndex屬性值改變時發(fā)生。KeyPress
在控件有焦點的情況下按下鍵時發(fā)生。33a設(shè)計一個窗體,通過一個文本框向合框中添加項。Form6窗體:(1)設(shè)計界面(2)事件過程:privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text!="") if(!comboBox1.Items.Contains(textBox1.Text)) comboBox1.Items.Add(textBox1.Text);//不添加重復(fù)項}34a運(yùn)行界面35a列表框控件是一個為用戶提供選擇的列表,用戶可從列表框列出的一組選項中用鼠標(biāo)選取一個或多個所需的選項。如果有較多的選擇項,超出規(guī)定的區(qū)域而不能一次全部顯示時,C#會自動加上滾動條。與組合框類似。36a列表框的屬性說明MultiColumn獲取或設(shè)置列表框控件是否支持多列。設(shè)置為True,則支持多列,設(shè)置為False(默認(rèn)值),則不支持多列SelectedIndex獲取或設(shè)置列表框控件中當(dāng)前選定項從0開始的索引。SelectedIndices獲取一個集合,它包含所有當(dāng)前選定項的從0開始的索引。SelectedItem獲取或設(shè)置列表框控件中當(dāng)前選定項。SelectedItems獲取一個集合,它包含所有當(dāng)前選定項。Items
獲取列表控件項的集合。SelectionMode獲取或設(shè)置列表框控件的選擇模式??蛇x以下值之一:
one:表示只能選擇一項。
none:表示無法選擇。MultiSimple:表示可以選擇多項。MultiExtended:表示可以選擇多項。并且按下Shift鍵的同時單擊鼠標(biāo)或者同時按下Shift鍵和箭頭鍵,會將選定內(nèi)容從前一選定項擴(kuò)展到當(dāng)前項,按下Ctrl鍵的同時單擊鼠標(biāo)將選擇或撤銷選擇列表中的某項。Text當(dāng)前選取的選項文本。37a設(shè)計一個窗體,其功能是在兩個列表框中移動數(shù)據(jù)項。Form7窗體:(1)設(shè)計界面(2)事件過程:privatevoidForm7_Load(objectsender,EventArgse){listBox1.Items.Add("清華大學(xué)");listBox1.Items.Add("北京大學(xué)");listBox1.Items.Add("浙江大學(xué)");listBox1.Items.Add("南京大學(xué)");listBox1.Items.Add("武漢大學(xué)");listBox1.Items.Add("中國科技大學(xué)");listBox1.Items.Add("中國人民大學(xué)");listBox1.Items.Add("華中科技大學(xué)");listBox1.Items.Add("復(fù)旦大學(xué)");enbutton(); //調(diào)用enbutton()方法}38aprivatevoidenbutton()//自定義方法{if(listBox1.Items.Count==0) //當(dāng)左列表框為空時右移命令按鈕不可用{button1.Enabled=false;button2.Enabled=false;}else //當(dāng)左列表框不為空時右移命令按鈕可用{button1.Enabled=true;button2.Enabled=true;}if(listBox2.Items.Count==0) //當(dāng)右列表框為空時左移命令按鈕不可用{button3.Enabled=false;button4.Enabled=false;}else //當(dāng)右列表框不為空時左移命令按鈕可用{button3.Enabled=true;button4.Enabled=true;}}39aprivatevoidbutton1_Click(objectsender,EventArgse){if(listBox1.SelectedIndex>=0)//將左列表框中選中項移到右列表框中{listBox2.Items.Add(listBox1.SelectedItem);listBox1.Items.RemoveAt(listBox1.SelectedIndex);}enbutton(); //調(diào)用enbutton()方法}privatevoidbutton2_Click(objectsender,EventArgse){foreach(objectiteminlistBox1.Items)//將左列表框中所有項移到右列表框中l(wèi)istBox2.Items.Add(item);listBox1.Items.Clear();enbutton(); //調(diào)用enbutton()方法}40aprivatevoidbutton3_Click(objectsender,EventArgse){if(listBox2.SelectedIndex>=0)//將右列表框中選中項移到左列表框中{listBox1.Items.Add(listBox2.SelectedItem);listBox2.Items.RemoveAt(listBox2.SelectedIndex);}enbutton(); //調(diào)用enbutton()方法}privatevoidbutton4_Click(objectsender,EventArgse){foreach(objectiteminlistBox2.Items)//將右列表框中所有項移到左列表框中 listBox1.Items.Add(item);listBox2.Items.Clear();enbutton(); //調(diào)用enbutton()方法}41a運(yùn)行界面42a帶復(fù)選框的列表框控件用來顯示一系列列表項的,不過每個列表項前面都有一個復(fù)選項。這樣,是否選中了某個列表項就可以很清楚地表現(xiàn)出來。43a定時器控件特點是每隔一定的時間間隔就會自動運(yùn)行一次定時器事件。所謂時間間隔,指的是定時器事件兩次調(diào)用之間的時間間隔,一般以毫秒(ms)為基本單位。定時器的屬性說明Enabled設(shè)置是否起用定時器控件。若設(shè)置為True(默認(rèn)值),表示啟動定時器開始計時;否則,表示暫停定時器的使用。Interval設(shè)置兩個定時器事件之間的時間間隔。設(shè)置時以毫秒為單位,設(shè)置的范圍是0~65535ms。定時器的方法說明Start啟動定時器,也可以將Enabled屬性設(shè)置為True來啟動定時器。Stop停止定時器,也可以將Enabled屬性設(shè)置為False來停止定時器。44a設(shè)計一個窗體說明定時器的使用方法。Form9窗體:(1)設(shè)計界面(2)事件過程:privatevoidForm9_Load(objectsender,EventArgse){textBox1.Text=DateTime.Now.ToString("h:mm:ss");timer1.Enabled=true; //啟到定時器timer1timer1.Interval=100;}privatevoidtimer1_Tick(objectsender,EventArgse){textBox1.Text=DateTime.Now.ToString("h:mm:ss");}45a運(yùn)行界面46a滾動條控件滾動條的結(jié)構(gòu)為兩端各有一個滾動箭頭,兩個滾動箭頭中間是滾動條部分,在滾動條上有一個能夠移動的小方塊,叫做滾動框。水平滾動條和垂直滾動條47a滾動條的屬性說明Maximum表示滾動條的最大值。Minimum表示滾動條的最小值。Value表示目前滾動條所在位置對應(yīng)的值。LargeChange設(shè)置滾動條的最大變動值。SmallChange設(shè)置滾動條的最小變動值。滾動條的事件說明Scroll當(dāng)用鼠標(biāo)壓住滾動條上的滑塊進(jìn)行移動時,滑塊被重新定位時發(fā)生。Change當(dāng)改變Value屬性值時發(fā)生。48a設(shè)計一個窗體說明滾動條的使用方法。Form10窗體:(1)設(shè)計界面(2)事件過程:privatevoidForm10_Load(objectsender,EventArgse){hScrollBar1.Maximum=100;hScrollBar1.Minimum=0;hScrollBar1.SmallChange=2;hScrollBar1.LargeChange=5;vScrollBar1.Maximum=100;vScrollBar1.Minimum=0;vScrollBar1.SmallChange=2;vScrollBar1.LargeChange=5;hScrollBar1.Value=0;vScrollBar1.Value=0;textBox1.Text="0";}49aprivatevoidhScrollBar1_Scroll(objectsender,ScrollEventArgse){textBox1.Text=hScrollBar1.Value.ToString("d");//將hScrollBar1.Value整數(shù)將實際寬度轉(zhuǎn)換成字符串在textBox1中顯示vScrollBar1.Value=hScrollBar1.Value;}privatevoidvScrollBar1_Scroll(objectsender,ScrollEventArgse){textBox1.Text=vScrollBar1.Value.ToString("d");hScrollBar1.Value=vScrollBar1.Value;}50aprivatevoidbutton1_Click(objectsender,EventArgse){if(Convert.ToInt16(textBox1.Text)>=0 &&Convert.ToInt16(textBox1.Text)<=100){ hScrollBar1.Value=Convert.ToInt16(textBox1.Text); vScrollBar1.Value=Convert.ToInt16(textBox1.Text);}}運(yùn)行界面51a月歷控件日期/時間控件超鏈接標(biāo)簽控件52a多文檔窗體多文檔界面應(yīng)用程序由一個應(yīng)用程序(MDI父窗體)中包含多個文檔(MDI子窗體)組成,父窗體作為子窗體的容器,子窗體顯示各自文檔,它們具有不同的功能。處于活動狀態(tài)的子窗體的最大數(shù)目是1,子窗體本身不能成為父窗體,而且不能將其移動到父窗體的區(qū)域之外。多文檔界面應(yīng)用程序有如下特性:(1)所有子窗體均顯示在MDI窗體的工作區(qū)內(nèi),用戶可改變、移動子窗體的大小,但被限制在MDI窗體中。(2)當(dāng)最小化子窗體時,它的圖標(biāo)將顯示在MDI窗體上而不是在任務(wù)欄中。(3)當(dāng)最大化子窗體時,它的標(biāo)題與MDI窗體的標(biāo)題一起顯示在MDI窗體的標(biāo)題欄上。(4)MDI窗體和子窗體都可以有各自的菜單,當(dāng)子窗體加載時覆蓋MDI窗體的菜單。53aMDI父窗體屬性說明ActiveMdiChild表示當(dāng)前活動的MDI子窗口,如沒有子窗口則返回NULLIsMdiContainer指示窗體是否為MDI父窗體,值為True時表示是父窗體,值為False時表示是普通窗體MdiChildren以窗體數(shù)組形式返回所有MDI子窗體54aMDI父窗體的方法一般只使用父窗體的LayoutMdi方法,其使用格式為:MDI父窗體名.LayoutMdi(value)其功能是在MDI父窗體中排列MDI子窗體,參數(shù)value決定排列方式,有以下4種取值:
LayoutMdi.ArrangeIcons:所有MDI子窗體以圖標(biāo)形式排列在MDI父窗體中。
LayoutMdi.TileHorizontal:所有MDI子窗體均垂直平鋪在MDI父窗體中。
LayoutMdi.TileVertical:所有MDI子窗體均水平平鋪在MDI父窗體中。
LayoutMdi.Cascade:所有MDI子窗體均層疊在MDI父窗體中。55aMDI子窗體屬性說明IsMdiChild指示窗體是否為MDI子窗體,值為True時表示是子窗體,值為False時表示是一般窗體MdiParent用來指定該子窗體的MDI父窗體56a【例8.13】設(shè)計一個Windows應(yīng)用程序,說明多文檔窗體的使用方法。Form1窗體,將其IsMdiContainer屬性設(shè)為True:設(shè)計界面57a事件過程:privatevoidbutton1_Click(objectsender,EventArgse){Form2child=newForm2();child.MdiParent=this;child.Show();n++;child.Text="第"+n+"個子窗體";}privatevoidbutton2_Click(objectsender,EventArgse){this.LayoutMdi(System.Windows.Forms. MdiLayout.ArrangeIcons);}privatevoidbutton3_Click(objectsender,EventArgse){this.LayoutMdi(System.Windows.Forms. MdiLayout.Cascade);}privatevoidbutton4_Click(objectsender,EventArgse){this.LayoutMdi(System.Windows.Forms. MdiLayout.TileVertical);}58aprivatevoidbutton5_Click(objectsender,EventArgse){this.LayoutMdi(System.Windows.Forms. MdiLayout.TileHorizontal);}運(yùn)行界面59a窗體設(shè)計的事件機(jī)制什么是事件處理程序事件處理程序是代碼中的過程,用于確定事件(如用戶單擊按鈕或消息隊列收到消息)發(fā)生時要執(zhí)行的操作。事件處理程序是綁定到事件的方法。當(dāng)引發(fā)事件時,將執(zhí)行收到該事件的一個或多個事件處理程序。每個事件處理程序提供兩個參數(shù)。例如,窗體中一個命令按鈕button1的Click事件的事件處理程序如下:
60a其中,第一個參數(shù)sender提供對引發(fā)事件的對象的引用,第二個參數(shù)e傳遞特定于要處理的事件的對象。通過引用對象的屬性(有時引用其方法)可獲得一些信息,如鼠標(biāo)事件中鼠標(biāo)的位置或拖放事件中傳輸?shù)臄?shù)據(jù)。創(chuàng)建事件處理程序有以下兩種方法:
(1)在Windows窗體中創(chuàng)建事件處理程序。(2)在運(yùn)行時為Windows窗體創(chuàng)建事件處理程序。privatevoidbutton1_Click(objectsender,System.EventArgse){//輸入相應(yīng)的代碼}61a在Windows窗體中創(chuàng)建事件處理程序在Windows窗體設(shè)計器上創(chuàng)建事件處理程序的過程如下:(1)單擊要為其創(chuàng)建事件處理程序的窗體或控件。(2)在屬性窗口中單擊“事件”按鈕。(3)在可用事件的列表中,單擊要為其創(chuàng)建事件處理程序的事件。(4)在事件名稱右側(cè)的框中,鍵入處理程序的名稱,然后按Enter鍵。如圖8.40所示是為button1命令按鈕選擇button1_Click事件處理程序,這樣C#系統(tǒng)會在對應(yīng)窗體的.Designer.cs文件中自動添加以下語句:this.button1.Click+=newSystem.EventHandler(this.button1_Click);該語句的功能是訂閱事件(參見第6章),即接收器使用加法賦值運(yùn)算符(+=)將該委托System.EventHandler(this.button1_Click)添加到源對象button1的事件中。(5)將適當(dāng)?shù)拇a添加到該事件處理程序中。62a在運(yùn)行時為Windows窗體創(chuàng)建事件處理程序在運(yùn)行時創(chuàng)建事件處理程序的過程如下:(1)在代碼編輯器中打開要向其添加事件處理程序的窗體。(2)對于要處理的事件,將帶有其方法簽名的方法添加到窗體上。例如,如果要處理命令按鈕button1的Click事件,則需創(chuàng)建如下的一個方法:privatevoidbutton1_Click(objectsender,System.EventArgse){ //輸入相應(yīng)的代碼}63a(3)將適合應(yīng)用程序的代碼添加到事件處理程序中。(4)確定要創(chuàng)建事件處理程序的窗體或控件。(5)打開對應(yīng)窗體的.Designer.cs文件,添加指定事件處理程序的代碼處理事件。例如,以下代碼指定事件處理程序button1_Click處理命令按鈕控件的Click事件:button1.Click+=newSystem.EventHandler(button1_Click);64a將多個事件連接到Windows窗體中的單個事件處理程序在應(yīng)用程序設(shè)計中,可能需要將單個事件處理程序用于多個事件或讓多個事件執(zhí)行同一過程,這樣便于簡化代碼。在C#中將多個事件連接到單個事件處理程序的過程如下:(1)選擇要將事件處理程序連接到的控件。(2)在“屬性”窗
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國運(yùn)動刺激療法行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國鋼制螺旋錐齒輪行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國戶外電氣箱行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球軸承精密滾珠行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國QUV紫外老化試驗箱行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025房地產(chǎn)公司辦公區(qū)空調(diào)安裝合同
- 掌握學(xué)習(xí)的方法主題班會
- 理療店項目合作合同范本
- 委托的貨物運(yùn)輸合同范本
- 鋼板租賃合同書
- 蛋糕店服務(wù)員勞動合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項訓(xùn)練【含答案】
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 2024-2030年中國烘焙食品行業(yè)運(yùn)營效益及營銷前景預(yù)測報告
- 寧德時代筆試題庫
- 康復(fù)醫(yī)院患者隱私保護(hù)管理制度
- 新課標(biāo)I、Ⅱ卷 (2024-2020) 近五年高考英語真題滿分作文
- 公司安全事故隱患內(nèi)部舉報、報告獎勵制度
- 沈陽理工大學(xué)《數(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 共享單車安全知識
評論
0/150
提交評論