Download presentation
Presentation is loading. Please wait.
1
De mo- dataSo urce 與 DropD ownLi st CH06
2
Windows 程式設計基本概念 MDI 表單的使用 一般而言我們也會 將選單和工具列放 置於主視窗上。 主視窗裡面同時可以有多份文件。 看起來像是另一個小桌面,桌面上 有多份文件,而文件彼此之間互不 干擾,使用者可以在多份文件當中 切換,以利編輯或參考。 一般來說,子視窗不會有 選單、工具列、狀態列等 功能。 主視窗上可以有 狀態列。 典型的 MDI 範例 - Excel Sheet
3
Windows 程式設計基本概念 MDI 表單的使用 文件 Book1 是一個表 單 ( 一般稱之為 MdiChild) 文件 Book2 也是一個表單 ( 一般稱之為 MdiChild) 主視窗也是一個表單 ( 一般稱之為 MdiParent)
4
Windows 程式設計基本概念 MDI 表單的使用 表單外觀已經變成像 是容器的樣式 這個屬性可以將一般表單 變為 MdiParent 要設計出這樣的應用程式,您只 需要把主要表單的 isMdiContainer 屬性設為 True 即可
5
Windows 程式設計基本概念 MDI 子表單的建立 當表單都建立好之後,我們只需要將一般表單的 MdiParent 屬性,設為主表單,就可以讓一般表單化身為 MdiChild 表單, 顯示在主視窗 (MdiParent 表單 ) 中: 一般表單名稱.MdiParent = Mdi 父視窗 ( 主表單 ) 名稱 依照一般的方式建 立兩個新表單 這則是兩個一般 的表單 這是將 isMdiContainer 屬性 設為 True 的主表單
6
Windows 程式設計基本概念 MDI 子表單的建立 EX:CH06-01\Main.vb Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim MyChild1 As New Child1 Dim MyChild2 As New Child2 '顯示第一個MDI子表單 MyChild1.MdiParent = Me MyChild1.Show() '顯示第二個MDI子表單 MyChild2.MdiParent = Me MyChild2.Show() End Sub 這邊的 Me ,指的是主表單 Main 。 只要在顯示表單時,將表單的 MdiParent 屬性設為 MdiParent 表單,即可以 MDI 方 式呈現。
7
Windows 程式設計基本概念 MDI 子表單的建立 執行結果 :MDI 子表單
8
Windows 程式設計基本概念 表單的 Owner 屬性 執行結果 :MDI 子表單 Word 畫面之中,『尋找 及替代』功能視窗顯示出 來之後,在尚未關閉該視 窗的狀況底下,即使切換 主視窗,『尋找及替代』 視窗依舊會疊在 Word 主 視窗之上 … 但是這個特性又與『最上 層顯示的表單』稍微有所 不同,最上層表單的功能 是在顯示的時候一律會蓋 過其他表單,但是 Owner 表單則是只會蓋過其『擁 有者』。
9
Windows 程式設計基本概念 表單的 Owner 屬性 其設定的方法是: EX:CH06-02\Form1.vb Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim NewForm As New Form2 NewForm.Owner = Me NewForm.Show() End Sub 將被擁有的表 單的 Owner 屬性 設為擁有者
10
Windows 程式設計基本概念 表單的 Owner 屬性 您會發現即使 form1 是 Active 表單,但是 Form2 仍然會疊在 Form1 之上。
11
Windows 程式設計基本概念 表單間的資料交換 方式一: EX:CH06-03\Module1.vb Public Module Module1 '模組內的Public成員,具有與整個程式相同的生命週期以及最大的存取範圍 Public GlobalVariable As String End Module 模組內的 Public 成員,具有與整個程式相同的生命週期以及最大的存取範圍,意即,在 程式的任何地方都可以存取到此成員。 因此我們可以用它來在表單之間交換資訊 … 方式二: 您也可以透過 My 類別中的 My.Application.OpenForms ,列舉出目前程式所有開啟的表 單,並且存取與搜尋您所需要的資料。
12
Windows 程式設計基本概念 不具標題的視窗 要達到這個功能,可將表單的標題部份取消,某些需要完整掌握表單外觀樣式的程式 時常會這麼做。要達成這個效果很簡單,只需要將表單的 FormBorderStyle 設為 None 即 可:
13
Windows 程式設計基本概念 表單按鍵事件的抓取 我們可以將表單的 KeyPreview 屬性設為 True ,這時候表單將會比控制項先一步接收到 按鈕事件,因此我們撰寫程式如下: EX:CH06-12\Form1.vb '捕捉按鍵 Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then Me.PictureBox1.Left -= 5 End If If e.KeyCode = Keys.Right Then Me.PictureBox1.Left += 5 End If End Sub 當鍵盤被按下時會觸發此事件, 透過 e.KeyCode 回傳被按下的按 鍵代碼。
14
Windows 程式設計基本概念 突顯示選單 - ContextMenuStrip 基本功能:在程式執行後,提供突顯示選單,讓使用者能在按下滑鼠「右鍵」時,出 現『突顯式』的功能選單。 使用時機:在需要讓特定控制項具有『按右鍵就跳出功能選單』時使用。 外觀:當 ContextMenuStrip 被拖曳出來後,會出現在 Component Tray ,設計階段則是出 現在表單左上方 ( 讓開發人員編輯選單 ) ,執行階段則以選單的形式出現在控制項上, 例如下圖是在 PictureBox 上按下滑鼠右鍵時,所跳出的突顯式選單。
15
Windows 程式設計基本概念 主選單 - MenuStrip 基本功能:建立主功能表。 使用時機:當系統的功能繁多,需要分門別類做出整理,或是其他需要主功能表的場 合。 外觀:當 MenuStrip 被拖曳出來後,會出現在 Component Tray ,但執行階段主選單則是 在視窗的最上方。
16
Windows 程式設計基本概念 工具列 - ToolStrip 基本功能:在表單上提供工具列,讓開發人員佈置按鈕或是其他項目。 使用時機:當程式中希望把功能分類,讓各項功能以圖示的方式呈現時。 外觀:當 ToolStrip 被拖曳出來後,會出現在 Component Tray ,可直接在主視窗中編輯, 加入按鈕或是其他項目。
17
Windows 程式設計基本概念 對話視窗 – 開檔與關檔
18
Windows 程式設計基本概念 對話視窗 – 開檔與關檔 EX:CH06-09\Form1.vb '開啟檔案 Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Me.OpenFileDialog1.Filter = "文字檔案(*.txt)|*.txt " If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then Dim filename As String = Me.OpenFileDialog1.FileName '將指定的檔案載入TextBox Me.TextBox1.Text = My.Computer.FileSystem.ReadAllText(filename) End If End Sub 開檔視窗
19
Windows 程式設計基本概念 對話視窗 – 開檔與關檔
20
Windows 程式設計基本概念 對話視窗 – 開檔與關檔 EX:CH06-12\Form1.vb '儲存檔案 Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click Me.SaveFileDialog1.Filter = "文字檔案(*.txt)|*.txt" If Me.SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then Dim filename As String = Me.OpenFileDialog1.FileName '將TextBox的內容寫入指定的檔案 My.Computer.FileSystem.WriteAllText(filename, Me.TextBox1.Text, False) End If End Sub 存檔視窗
21
Windows 程式設計基本概念 對話視窗 – 開檔與關檔
22
Windows 程式設計基本概念 對話視窗 – 開檔與關檔 請注意,這些對話視窗並不會真的幫你完成開檔與存檔 功能,而是幫助開發人員可以省去製作這些統一的使用者介 面 ( 表單 ) 的時間。 例如,開檔與另存新檔對話視窗會跳出畫面讓使用者選 擇或設定要儲存的檔案位置,但是只負責到傳回檔名為止, 後續的存檔或是開檔工作則是程式設計師要負責完成。
23
Windows 程式設計基本概念 對話視窗 – 文字樣式選擇 您也可以透過工具箱拖曳出的 FontDialog 控制項,提供使用者 選取文字字型的功能: 呼叫程式碼 Me.FontDialog1.ShowDialog() 透過 FontDialog1 的 Font 屬性,則 可以取回使用者選取的文字樣式。
24
Windows 程式設計基本概念 對話視窗 – 顏色選擇 您也可以從工具箱中拖曳 ColorDialog 到表單上,這個控制項 可以提供使用者色彩選擇對話視窗,該控制項的操作方式如 下: 呼叫程式碼 Me.ColorDialog1.ShowDialog() 使用者選擇的顏色,會透過 ColorDialog1 的 Color 屬性 傳回。
25
Windows 程式設計基本概念 ErrorProvider 控制項 基本功能: 提供自訂的錯誤訊息。 使用時機: 您可以利用 ErrorProvider 判斷或驗證使用者在特定欄位上所輸入 的值,有沒有符合規範。 外觀: 當 ErrorProvider 被拖曳出來後,會出現在 Component Tray 。但是當執 行階段,則會出現在表單的畫面上,提示使用者警示訊息:
26
Windows 程式設計基本概念 ErrorProvider 控制項
27
Windows 程式設計基本概念 ErrorProvider 控制項 我們利用 TextBox 來引發錯誤訊息,另外請注意 Button 控制項,其 CausesValidation 屬性為 True( 預設 ) ,表示按下之後也會觸發『 Validating 』 事件,因此 TextBox 的『錯誤驗證事件』會隨著 Button 被按下而觸發:
28
Windows 程式設計基本概念 ErrorProvider 控制項 此外,要注意驗證的程式碼是寫在「 TextBox1_Validating 」底下,您會發 現,不管是 TextBox 文字的改變,或是按下 Button ,都會觸發驗證錯誤事件, 而我們在此事件當中所撰寫的程式碼,就負責控制 ErrorProvider 的顯示: EX:CH06-11\Form1.vb Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating '如果TextBox1.Text是空的,就出現錯誤訊息 If TextBox1.Text = "" Then ErrorProvider1.SetError(TextBox1, "不可以是空值") Else '如果TextBox1.Text不是空值就清除錯誤 ErrorProvider1.SetError(TextBox1, "") End If End Sub
29
Windows 程式設計基本概念 ErrorProvider 控制項 EX:CH06-11\Form1.vb Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating '如果TextBox2.Text不是數字是空的,就出現錯誤訊息 If Not IsNumeric(TextBox2.Text) Then ErrorProvider1.SetError(TextBox2, "必需是數字") Else ErrorProvider1.SetError(TextBox2, "") End If End Sub
30
Windows 程式設計基本概念 Timer 控制項 基本功能:此控制項提供每隔 N 秒自動觸發某事件的功能。 使用時機:在程式當中想要監控某個狀態,或是定時進行一些動作時。 外觀:當 Timer 被拖曳出來後,會出現在 Component Tray ,使用時表單上也 不會出現任何控制項。
31
Windows 程式設計基本概念 Timer 控制項 此控制項的重要成員如下: 屬性名稱值的型別 & 範圍值說明 Enabled Boolean 預設為 False 是否啟動 Timer 。 Interval Integer 預設為 100 計算時間的單位(毫 秒)。當 Interval=1000 , 時間移動的單位為 1 秒。 事件名稱說明 Timer1_Tick 當 Timer 啟動時,要執行的事件程式碼,就撰寫在這個地方。
32
Windows 程式設計基本概念 Timer 控制項 當您拖曳 Timer 控制項到頁面上之後,可以 Double-Click 該圖示,並撰寫底 下事件程式碼: EX:電子鐘範例 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Label1.Text = Now.ToString("HH:mm:ss ") & Now.Millisecond End Sub 由於我們將 Timer1 的 Enabled 屬性設為 True ,因此當程式一開始執行之後,就出 現了電子鐘:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.