亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

使用 VStudio 2005 設計設備應用程序的用戶界面和數據
2007-07-29   MSDN

簡介

每個 Visual Studio 的新版本都會提高開發人員的效率,因為可視設計器工具越來越多,為開發人員生成的代碼也越來越多。此代碼具有巨大優勢,因為您無需將精力集中在編寫各種探測代碼,而可以將精力幾乎完全集中在應用程序所需的功能上。由于市場上有許多設備,所有設備的外觀設置都不同,因此擁有真正的所見即所得 (WYSIWYG) 用戶界面設計工具(即使用這種工具設計的用戶界面與最終用戶界面盡可能匹配)是至關重要的。隨著將大量數據存儲在本地設備上所需的應用程序越來越多,在開發環境內直觀地為 SQL Server Mobile 數據庫設計表和數據庫的功能將會對您有所幫助。Visual Studio 2005 提供了功能強大的設計工具,這些工具減少了設計用戶界面和數據所涉及到的許多工作。

通過閱讀本文,您將了解到如何創建無需自己編寫一行代碼就能夠在縱向模式和橫向模式之間進行動態更改的用戶界面。如果要創建的應用程序使用多個窗體且每個窗體都具有許多共同的特征,則可以使用窗體繼承和完整的設計器支持來限制必須為各個窗體提供的代碼數。最后,如果要在應用程序內使用本地數據庫,則可以使用 Visual Studio 2005 設計器工具創建數據庫,甚至填充該數據庫。

設計基于 Windows Mobile 5.0 的 Pocket PC 的簡單用戶界面

要開始開發新的設備應用程序,首先需要在 Visual Studio 2005 創建一個新項目。該項目應為 C# 或 Visual Basic .NET(將運行 Windows Mobile 5.0 的 Pocket PC 作為目標)中的智能設備項目。雖然與 Windows 窗體設計器本身無關,但本文通篇還是以 C# 顯示了所有代碼示例。然而,所有代碼示例也能夠以 Visual Basic .NET 下載。

創建新設備應用程序時,Visual Studio 2005 按目標設備的正確尺寸顯示一個空窗體,包括與真實設備盡可能貼近的設備外觀。使用圖 1 中顯示的 Device Controls(設備控件)工具箱,可以將控件拖到應用程序的窗體中。

""

1Visual Studio 2005 設計器視圖

如果將工具箱中設備控件的數量與 Microsoft Visual Studio .NET 2003 中設備控件的數量相比,您會發現 Visual Studio 2005 中的可用控件更多。如果您對新的控件并不熟悉,那么最好使用新控件創建一個簡單的應用程序,了解每個控件的屬性及其行為。當然,還應該查看特定控件的聯機幫助。開始設計用戶界面時,立即引起您注意的是 Windows 窗體設計器如何幫助您對齊控件并建議各個控件之間的最小距離。自動顯示的參考線(如圖 2 所示)對您在短時間內創建組織結構良好的用戶界面有很大幫助。

""

2:參考線有助于布局用戶界面

停靠和定位控件

要確保窗體在縱向模式和橫向模式下都能正確顯示,可以將控件停靠和定位到容器內的指定位置。停靠和定位之間的差別雖然很細微,但卻很重要。將控件定位到容器的一個或多個邊緣時,要確保設備的顯示方向改變時到定位邊緣的相對位置保持不變。停靠控件時,則要指定要定位的控件所停靠的容器的邊緣。甚至可以指定控件停靠到所有邊緣,也就是說該控件將填充容器的整個空間。容器是控件的宿主,或者說是控件的父級。例如,容器可以是整個窗體,也可以是 GroupBox 或者 Panel。

要說明定位和停靠之間的差別以及以不同顯示方向說明定位控件和停靠控件的行為,可以創建一個包含許多標簽控件的簡單用戶界面(各個控件的背景色不同),然后就可以清楚地查看定位、停靠的行為以及方向的變化。用戶界面設計沒有特別的意義,只是有助于您了解停靠和定位之間的差別。它還將顯示對從縱向模式改為橫向模式的影響。假設您已創建了一個用戶界面,如圖 3 所示。

""

3:縱向模式的 Pocket PC,其用戶界面包含既未停靠也未定位的多個標簽和一個面板

上面的三個標簽位于面板上,下面的兩個標簽位于窗體本身上。對于添加到窗體上的所有控件,請確保明確消除定位。默認情況下,Visual Studio 2005 將所有控件定位到上邊緣和左邊緣或它們的宿主容器中。處于縱向模式時,用戶界面看起來很正常,但是如果將方向改為橫向模式,就會出現問題,如圖 4 所示。

""

4:橫向模式的 Pocket PC,其用戶界面包含既未停靠也未定位的控件

您馬上會看到,并非縱向模式中顯示的所有標簽在橫向模式中都能顯示。部分面板(包括 label1)未顯示在屏幕上。label5 也未顯示在屏幕上,在橫向模式下,顯示屏的左右兩側未被填充。橫向模式似乎只能顯示縱向模式用戶界面的部分內容。

要解決這個問題,無需編寫實際代碼,可以利用 .NET Compact Framework 2.0 應用程序的新增功能:停靠和定位。通過設置 Anchor 屬性,可以輕松地將控件定位到屏幕的一個或多個邊緣。定位控件意味著到定位邊緣的相對位置始終保持不變,與顯示方向無關。通過使用 Dock 屬性,可以指定特定控件與其父控件邊緣的對齊方式或填充屏幕區域的方式。將多個控件停靠到其父控件的同一邊緣會導致這些控件彼此堆疊。查看圖 5,您會發現其與圖 3 略有不同。但是,此時控件已被定位和停靠。

""

5:縱向模式的 Pocket PC,其用戶界面包含停靠和定位控件

在圖 5 中,標簽指明了它們的停靠方式。上面的三個標簽都屬于面板控件。最上面的標簽未被停靠,但是定位到了面板控件的左邊緣、上邊緣和右邊緣,面板控件又停靠到窗體的上邊緣。左邊緣、上邊緣、右邊緣與該標簽之間的距離與顯示方向無關,始終保持不變。用戶界面以橫向模式顯示時,該標簽的大小將被調整。面板控件中的其他兩個標簽顯示在彼此的上邊緣;二者都停靠到面板控件的下邊緣。Tab 鍵順序決定了這些標簽的顯示方式。如果現在將顯示方向改為橫向模式,窗體上的所有控件仍將顯示,整個窗體都用來填充控件,如圖 6 所示。

""

6:橫向模式的 Pocket PC,其用戶界面包含停靠和定位控件

圖 6 中顯示的用戶界面比圖 4 中顯示的用戶界面的效果要好得多,因為各個控件的大小已經調整,能夠在橫向模式中正確顯示。要想真正了解停靠和定位對縱向模式和橫向模式中控件位置的影響,應當花些時間來嘗試一下。

在 Visual Studio 2005 中,在縱向和橫向模式(甚至設計器視圖)中查看用戶界面十分簡單。要更改設計器視圖中設備的方向,只需從快捷菜單中選擇整個窗體 [右鍵單擊未放置任何控件的窗體的任意位置,再右鍵單擊窗體的標題欄或設備外觀,然后選擇 Select <form class name>(選擇 <form class name>)]。如果應用程序中只有一個窗體,并且使用 Visual Studio 2005 指定給該窗體的默認名稱,則 <form class name> 將為 Form1。選擇整個窗體后,通過右鍵單擊設備外觀顯示的快捷菜單將包含不同項,包括 Rotate Left(向左旋轉)和 Rotate Right(向右旋轉)。您可以使用這些項更改顯示方向,如圖 7 所示。此外,選擇整個窗體后,也可以使用工具欄按鈕更改方向。

""

7:更改設計器視圖中的顯示方向

拆分器控件

.NET Compact Framework 2.0 中有一個新控件并不容易理解,并且不能直觀使用。運行時,可以使用新的拆分器控件和停靠控件來更改那些控件的大小,類似于完整 .NET Framework 中的拆分器控件。

設計過程中,可以添加拆分器控件,還可以設置它們的大小。您向窗體添加停靠控件和拆分器控件的順序決定了拆分器運行于哪個停靠控件,還決定了拆分器控件對于用戶的顯示方式。根據 Visual Studio 聯機幫助,使用拆分器控件可以調整停靠順序中在它前面的那個停靠控件的大小。因為無法手動設置停靠順序,所以必須在添加完要調整其大小的停靠控件后立即添加拆分器控件。還必須確保將拆分器控件停靠到要調整其大小的停靠控件的邊緣,如圖 8 所示。

""

8:設計器視圖中的拆分器控件

圖 8 中的用戶界面是按以下方式創建的。所有三個圖片框逐個添加到窗體中,并停靠到窗體的上邊緣和右邊緣,圖 8 中窗體左下部顯示的最后一個圖片框停靠為填充。創建圖片框后,將兩個拆分器拖到左下部的圖片框中,并分別停靠到該圖片框的上邊緣和右邊緣。

查看設計器視圖中的用戶界面,您可能認為窗體右側的那個圖片框的大小只能進行水平調整,左側的那個圖片框的大小可以進行水平和垂直調整。但是,如圖 9 所示,移動水平拆分器時,所有控件都將根據拆分器的位置進行修改。出現這種情況的原因是因為右下部的那個圖片框停靠到窗體的右邊緣 — 始終盡可能占用和窗體右邊緣的可用空間一樣多的空間。此示例表明與拆分器不直接關聯的控件仍可以影響它們的大小。雖然此示例對演示拆分欄和停靠控件之間的關系很有用,但并不建議通過這么復雜的方式創建用戶界面。

""

9:使用拆分器控件調整停靠控件的大小

為了向用戶更直觀地表明拆分器控件影響停靠控件的方式,應考慮停靠控件的順序。在將其他控件添加到常用停靠區域之前,必須添加會影響停靠控件的拆分器控件,如圖 10 所示。

""

10:設計器視圖中緊跟需要調整大小的停靠控件創建的拆分器控件

如果以不同順序創建相同的用戶界面,就會出現不同的結果。創建頂部圖片框后立即創建水平拆分器控件。然后,創建右側圖片框,接著創建垂直拆分器控件,最后創建最后一個圖片框。盡管運行時調整大小的方式未更改,但是圖片框和拆分器的創建順序卻改變了,這讓用戶更好地了解拆分器如何調整不同控件的大小,如圖 11 所示。

""

11:使用按正確順序創建的拆分器控件來調整停靠控件的大小

設置 Tab 鍵順序

要確定哪個控件獲得焦點(即,哪個控件可以接受鍵盤輸入),將使用 Tab 鍵順序。之所以稱為 Tab 鍵順序,是因為您可以通過使用鍵盤(甚至 Pocket PC 的軟輸入面板)上的 TAB 鍵把焦點從一個控件改到另一個控件。

在 Visual Studio .NET 2003 中,可以接受鍵盤輸入的那些控件的 Tab 鍵順序是固定的,只是程度不同。Tab 鍵順序影響設計過程中控件的創建順序,除非刪除控件并以不同順序重新添加控件,否則該順序不會改變。在 Visual Studio 2005 中,創建用戶界面的所有控件后可以更改 Tab 鍵順序,這為用戶提供了更大的靈活性,因為用戶在設計用戶界面時不必考慮 Tab 鍵順序。例如,圖 12 中顯示的設計器視圖中具有原始 Tab 鍵順序的項目。

""

12:原始 Tab 鍵順序

該項目的用戶界面非常簡單,僅用于演示。窗體上的控件是按特定順序創建的。首先創建按鈕,然后創建 DateTime 控件,最后創建兩個文本框。創建控件的順序決定了初始的 Tab 鍵順序。通過單擊“Layout”(布局)工具欄上的 TabOrder(Tab 鍵順序)按鈕(圖 12 中所圈的那個按鈕),可以查看和修改 Tab 鍵順序。

如果保持此特定應用程序的 Tab 鍵順序不變,則運行應用程序時您將發現在控件中導航不是最佳體驗。起初,輸入焦點設置為用戶界面上的按鈕。按 TAB 鍵將輸入焦點改為 DateTime 控件。再次按 TAB 鍵輸入焦點將改為 tBox1,最后改為 tBox2。對用戶而言,從上至下導航到所有控件更加自然。在 Visual Studio .NET 2003 中,若想讓用戶從上至下導航用戶界面,則只能通過按您希望用戶導航控件的這一順序創建控件來實現。

在 Visual Studio 2005 中,選擇“Layout”(布局)工具欄上的 TabOrder(Tab 鍵順序)按鈕后,只需單擊能夠接收輸入焦點的每個控件就可以更改其 Tab 鍵順序。這意味著您只需將控件添加到窗體中,而無需考慮 Tab 鍵順序,因為您稍后可以修改 Tab 鍵順序,如圖 13 所示。

""

13:設計器視圖中修改過的 Tab 鍵順序

如果現在運行應用程序,您會發現在控件間導航比較自然,因為輸入焦點從用戶界面頂部開始逐個控件更改并依次輪流下去。也可以使用 TabIndex 屬性設置各個控件的 Tab 鍵順序。也可以指定用戶是否可以通過設置 TabStop 屬性在窗體中進行切換來導航到控件。這些屬性僅可以對那些能夠接受鍵盤輸入的控件執行。

更改設備外觀設置

原始 Pocket PC 的屏幕分辨率為 240 x 320 像素。現在,許多 Pocket PC 都有著不同的屏幕分辨率,甚至有正方形屏幕。要確保應用程序在所有這些設備上都能正常顯示,可以設置 FormFactor 屬性。FormFactor 屬性只是一個設計時值。也就是說,它本身不會影響應用程序。您可以使用 FormFactor 屬性來為設備設置多個不同的屏幕尺寸,以便確保在設計過程中用戶界面能夠在外觀設置不同的設備上正常顯示。圖 14 中顯示了一個在 Pocket PC 上運行的簡單文本編輯器。如果查看下載代碼示例,使用 .NET Compact Framework 2.0 編寫托管代碼時,您會感激為您所提供的強大功能。此示例編輯器的整個功能大約采用了 30 行源代碼,包括能夠打開現有文件和保存文件。當然,此示例的功能非常有限,沒有任何拼寫或語法檢查功能或者典型編輯功能(如查找和替換),但是此示例功能完善。

""

14:具有簡單文本編輯器用戶界面的 Pocket PC 應用程序

假設您要在屏幕為正方形的 Pocket PC 上運行此應用程序。由于定位控件,很容易保持同樣的用戶界面,而無需編寫任何代碼。使用新的僅設計時屬性 FormFactor 可以驗證 Visual Studio 2005 設計器中應用程序的外觀。圖 15 中顯示了一個新外觀,應用程序的用戶界面已根據新設備外觀設置進行了調整。

""

15:具有以正方形屏幕外觀設置顯示的簡單文本編輯器用戶界面的 Pocket PC 應用程序

在 Visual Studio 2005 中更改外觀設置十分容易,甚至不需要重新編譯應用程序。畢竟,設備仍是 Pocket PC 設備,因此您仍可以使用所有 Pocket PC 的特定控件。設計過程中,唯一發生變化的是窗體的布局。

但是如果要改為完全不同的設備該怎么辦?設想您要在 Smartphone 設備上使用同一應用程序。

更改目標平臺

Visual Studio .NET 2003 實際上不支持更改特定應用程序的目標平臺。例如,如果創建了一個 Pocket PC 的應用程序,Visual Studio .NET 2003 不支持更改項目以將 Smartphone 作為目標。最好的方法是將所有業務邏輯與用戶界面邏輯相分離,將業務邏輯重用于新目標平臺,然后手動重新設計用戶界面。

在 Visual Studio 2005 中,則可以更改目標平臺。當然,從軟件開發人員的角度來看,將業務邏輯與用戶界面邏輯相分離仍是個不錯的主意,但是使用 Visual Studio 2005 重新將其他平臺作為目標可以提高修改應用程序用戶界面以支持不同硬件的效率。實際上,更改目標平臺后,只有用戶界面將會更改。該項目生成的應用程序的所有其他方面保持不變。因為有幾個控件在 Pocket PC 上有效但在 Smartphone 上無效,設計器將這些控件轉換為在 Smartphone 上有效的最匹配的替代控件。

使用 Visual Studio 2005,可以更改特定項目的目標平臺。設計器將盡量幫助您轉換用戶界面以滿足新目標平臺的要求。在 Visual Studio 2005 中,可以通過選擇 Project(項目)菜單上的 Change Target Platform(更改目標平臺)來更改為新目標平臺。選擇此命令后,對話框將顯示當前目標平臺和一個列表,從該列表中可以選項新目標平臺,如圖 16 所示。

""

16:將目標平臺從 Pocket PC 改為 Smartphone

單擊 OK(確定),Visual Studio 將更改目標平臺。在更改過程中,它將關閉并重新打開項目。區別是現在窗體設計器以 Smartphone 外觀設置顯示應用程序。Visual Studio 未更改任何代碼,所有原始控件在該窗體上仍然有效,但是您可能需要調整這些控件的大小以適應 Smartphone 的較小屏幕。

圖 17 顯示了許多 Smartphone 不支持的控件。您可以區分目標平臺不支持的控件,因為它們顯示在窗體上時會有一個警告指示器(中間有感嘆號的三角形),并且其屬性都灰顯。Visual Studio 2005 可以幫助您將不受支持的控件轉換為支持控件。選擇窗體中不支持的控件并單擊控件頂部顯示的箭頭后,將顯示一個帶有支持控件的彈出菜單,這些支持控件的功能與不受支持的控件的功能相當。如果是按鈕(如圖 17 所示),Visual Studio 幫助您將它們轉換為文本框或菜單項。將按鈕轉換為菜單項后,該菜單項將與原始 button_Click 事件相連接,這意味著該菜單項將獲得與 Pocket PC 上的按鈕相同的功能。在圖 17 中,還可以看到 Smartphone 不支持 SaveFileDialog 控件和 OpenFileDialog 控件。但是這些組件與按鈕不同 — 無法將這些組件簡單地轉換為替代 Smartphone 控件,因此必須執行一些操作來更改這些控件。在此下載代碼示例中,最可能執行的操作就是提供自己的對話框來打開并保存文件。在下載代碼示例中,不會顯示這些對話框,但愿您能夠找到解決的方法。

""

17:已轉換為 Smartphone 應用程序的 Pocket PC 應用程序

將所有按鈕轉換為菜單項并刪除 OpenFileDialog 組件和 SaveFileDialog 組件后,只需創建并運行項目。如圖 18 所示,現在相同的應用程序在 Smartphone 上運行。更改目標平臺的操作為不可逆操作。雖然 Visual Studio 不會更改應用程序代碼,但是將更改用戶界面的布局。

""

18:現在在 Smartphone 上運行的簡單文本編輯器

雖然您必須執行一些操作才能將應用程序改為不同的目標設備,但是在大多數情況下,工作量小于您為另一個目標設備創建整個用戶界面所需的工作量。

可視窗體繼承

在過去幾年中,許多設備開發人員都請求了窗體繼承的可視支持。在 Visual Studio .NET 2003 中,智能設備項目不支持可視窗體繼承,盡管從另一個窗體繼承一個窗體時您可以使用 C# 預處理器進行條件編譯來提供相當有限的設計器支持(如果您很有創意)。相反,Visual Studio 2005 對可視窗體繼承提供了完全設計器支持。這是一個優秀的新增功能,使您可以重用和擴展窗體,而無需不斷地從頭開始創建新窗體。

要顯示可視窗體繼承,請從您以后能夠使用其派生其他窗體的簡單基本窗體開始。雖然這不是必須的,但是對創建承載基本窗體的單獨類庫很有用。如果將基本窗體創建為項目的一部分,則該窗體不是在其他應用程序中重用的理想對象。此外,Visual Studio 中的窗體設計器必須能夠讀取基本窗體的元數據才能夠顯示從其派生的窗體,也就是說如果基本窗體與派生窗體包含在同一項目中,則必須進行額外的編譯才能將基本窗體用于繼承。在單獨的庫中創建基本窗體時,則無需執行此操作。

請務必提早考慮基本窗體,尤其應該了解哪些控件可以在繼承的窗體中修改,哪些控件不可以修改。為了能夠修改控件或控件的行為,必須確保將特定控件的訪問修飾符設置為 private 之外的值。派生窗體中專用控件的屬性無法更改。圖 19 顯示了以后可以在應用程序中使用的簡單基本窗體。

""

19:存儲在單獨類庫中的基本窗體

基本窗體包含一個專用按鈕,單擊該按鈕時它將對每個派生窗體執行同一操作。由于此按鈕是 private 的,因此在派生窗體中無法訪問該按鈕及其成員。基本窗體還包含一個受保護的按鈕,具有一個作為虛方法實現的事件處理程序。和其他虛方法一樣,事件處理程序也可以在各個派生窗體中被替換。因為第二個按鈕是受保護的,所以在派生窗體中可以訪問該按鈕及其成員。您甚至可以決定在派生窗體中創建單獨的單擊事件處理程序,生成正在執行的基本窗體和派生窗體的事件處理程序。最后,基本窗體還包含一個受保護的標簽,表明可以從所有派生窗體中訪問該標簽。請注意,圖 19 中的基本窗體不包含菜單。默認情況下,設計器在每個新創建的窗體上都創建一個名為 mainMenu1 的菜單控件。可以在基本窗體中創建一個菜單,甚至可以在派生窗體中擴展該菜單。但是,在刪除派生窗體上的菜單以及將基類中菜單的訪問屬性設置為 ProtectedPublic 時要謹慎。

基本窗體中包含能夠在派生窗體間共享的一些常用功能,如下面的代碼示例所示。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BaseFormLibrary
{
public partial class BaseForm :Form
    {
public BaseForm()
        {
InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
label1.Text = "所有窗體上的相同操作";
        }

protected virtual void button2_Click(object sender, EventArgs e)
        {
label1.Text = "默認操作";
        }
    }
} 

BaseForm 方法包含兩個按鈕單擊事件處理程序。button1_Click 處理程序是 private 方法,不能替換。如果將 button1_click 作為 private 方法實現,在單擊 button1 時,將導致始終對每個派生窗體執行同一操作。但是,可以將 button1_Click 事件處理程序創建為受保護虛方法。在那種情況下,可以替換派生窗體中的 button1_Click 事件處理程序 — 使其具有對該特定窗體的特定功能。

button2_Click 事件處理程序的修飾符更加有趣。雖然窗體設計器生成的代碼創建了訪問修飾符設置為 privatebutton2_Click 事件處理程序,但是您可以在源文件中修改事件處理程序聲明。通過將 button2_Click 事件處理程序聲明為受保護虛方法,可以在派生窗體中替換該程序,從而導致單擊 button2 時執行它們的事件處理程序。如果派生窗體中未替換 button2_Click 事件處理程序,將執行基本窗體的 button2_Click 事件處理程序。這正是從基類派生類時的預期行為。因為 button2 聲明受保護,所以在以后的代碼示例中更有可能不顯示。Button2 聲明受保護后,派生窗體可以訪問其屬性和事件,包括單擊事件。因此,還可以向單擊事件添加另一個事件處理程序,從而導致執行基本窗體的事件處理程序和派生窗體的事件處理程序。

要使用基本窗體,可以創建一個新的智能設備項目,然后向其中的 BaseFormLibrary 程序集添加引用。如果創建的新智能設備項目為 Device Application 類型,則設計器將自動向該項目添加窗體。此窗體是從 System.Windows.Forms.Form 派生的。要從基本窗體派生,請向窗體的源文件添加“BaseFormLibary”命名空間的 using 聲明,然后只修改窗體源代碼中窗體的聲明,例如將

    public partial class Form1 :Form

更改為

    public partial class Form1 :BaseForm

時,將從以前創建的基本窗體中派生應用程序中的窗體。查看設計器視圖中的窗體時,您將看到基類中所有控件以及專門為此特定窗體添加的控件,如圖 20 所示。

""

20:包含基本窗體中的控件且具有完全設計器支持的派生窗體

派生窗體中繼承了基本窗體中的控件。您能夠認出繼承的控件,因為控件的左上角會顯示一個符號,如圖 21 所示。

""

21:繼承符號

您還能夠認出中間按鈕是基本窗體的 private 按鈕(表明該按鈕無法替換),因為該按鈕的左上角還有一個鎖符號。另外,因為中間按鈕的屬性在派生窗體中無法修改,所以其屬性灰顯。當然,可以向繼承窗體中添加其他控件。

圖 20 中的第一個按鈕是添加到繼承窗體中的新按鈕。整個應用程序在下載代碼示例中稱為 VisualInheritance,包含兩個窗體,這兩個窗體均繼承自基本窗體。主窗體將替換 Overridable action 按鈕單擊事件處理程序以顯示第二個繼承窗體。第二個窗體不替換 Overridable action 按鈕的單擊事件處理程序,所以單擊該按鈕時將僅執行基本窗體中提供的默認事件處理程序。下面的代碼示例顯示了應用程序主窗體的源代碼。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BaseFormLibrary;

namespace VisualInheritance
{
public partial class Form1 :BaseForm
    {
public Form1()
        {
InitializeComponent();
        }

protected override void button2_Click(object sender, EventArgs e)
        {
Form2 form = new Form2();
form.ShowDialog();
        }
    }
}

在上面的代碼示例中,您應當注意以下幾點。首先,通過查看類聲明,您會發現該窗體是從 BaseForm 派生的。第二,替換了 button2 的事件處理程序。如果想用派生窗體中的新功能替換事件處理程序的功能,必須替換 button2_Click 事件處理程序,而不是向其附加新的事件處理程序。Form2 的代碼甚至比您在下面的代碼示例中所看到的更簡單,僅包含窗體上新創建的 button3 的事件處理程序。如果單擊 Form2 中的 button1 或 button2,將執行 BaseForm 中找到的事件處理程序,如下面的代碼示例所示。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BaseFormLibrary;

namespace VisualInheritance
{
public partial class Form2 :BaseForm
    {
public Form2()
        {
InitializeComponent();
        }

private void button3_Click(object sender, EventArgs e)
        {
label1.Text = "單擊了本地按鈕";
        }
    }
}

現在,您應當相當了解如何將可視窗體繼承與 Windows 窗體設計器結合使用。當然,您可以將任何控件宿主在基本窗體中,只要您想在派生窗體中重用該控件。如果想在派生窗體中修改特定控件的行為,只需確保將控件的 Modifiers 屬性更改為 protectedpublic。將 Modifiers 屬性設置為 private 之外的值后,您甚至可以在派生窗體上隱藏控件、停靠控件或者調整控件的大小。

使用 Visual Studio 數據庫工具

SQL erver 2005 Mobile Edition (SQL Mobile) 是 SQL Server CE 的新名稱。如果您打算使用 SQL Mobile 數據庫,Visual Studio 2005 將為您提供強大的功能。首先,您可以在 Visual Studio 中創建數據庫。使用 Visual Studio 2005 之前的版本,只能以代碼或使用設備上的 QueryAnalyzer 版本在本地設備上創建 SQL Server CE 數據庫。通過 Visual Studio 2005,可以使用集成的 Visual Database Tools 創建數據庫。還可以使用數據填充數據庫并創建類型化數據集。

這一部分將概述如何使用 Visual Studio 2005 來處理數據。本文不詳細介紹如何使用 SQL Mobile,只說明如何使用 Visual Studio 數據庫工具。但是,縱觀所有內容,您將了解如何在 Visual Studio 中創建 SQL Mobile 數據庫,如何在簡單的應用程序中使用該數據庫,以及如何通過使用數據綁定創建類型化數據集來填充控件。

要在 Visual Studio 2005 中創建 SQL Mobile 數據庫,可以使用 Visual Studio 2005 ServerExplorer(服務器資源管理器)。使用 ActiveSync 4.0 可以向現有項目添加新的 SQL Mobile 數據庫,修改現有 SQL Mobile 數據庫的架構,用數據填充 SQL Mobile 數據庫,以及檢查設備上已部署的數據庫。

應該從新項目開始,創建一個在應用程序內使用的簡單數據庫。要創建的數據庫是簡單的 DVD 集合數據庫。為舉例起見,該數據庫非常簡單,僅包含 DVD 標題和類別。數據庫由以下兩個不同的表組成:DVD_Titles 和 DVD_Categories。使用 ServerExplorer(服務器資源管理器),可以在本地開發計算機上創建數據庫。稍后,您將明白如何能夠將數據庫添加到項目中,以便該數據庫隨應用程序一起部署到設備。

在 Visual Studio 2005 中創建 SQL Mobile 數據庫的方法有若干種。要通過向項目中添加新的數據連接來創建數據庫,請右鍵單擊 ServerExplorer(服務器資源管理器)中的 Data Connections(數據連接),然后選擇 Add Connection(添加連接),如圖 22 所示。

注意:如果 Visual Studio 2005 中未顯示 Server Explorer(服務器資源管理器),請將其打開,方法是單擊 View(視圖),然后單擊 Visual Studio 2005 菜單上的 ServerExplorer(服務器資源管理器)。

""

22:向智能設備項目中添加數據庫連接

Visual Studio 顯示一個用于添加連接的對話框,如圖 23 中左側圖形所示。在此對話框中,可以附加到現有 SQL Mobile 數據庫,也可以創建一個新的數據庫。只要通過 ActiveSync 連接了設備,就可以在連接的設備上創建數據庫,甚至可以附加到該設備上的現有數據庫。如果要創建新的數據庫,首先要在本地開發計算機上創建數據庫,然后將其作為應用程序的一部分部署到設備。

""

23:使用 Add Connection(添加連接)對話框(左)和 Create New SQL Server 2005 Mobile Edition Database(創建新 SQL Server 2005 Mobile Edition 數據庫)對話框(右)來創建新的本地 SQL Mobile 數據庫

Add Connection(添加連接)對話框中,可以瀏覽現有數據庫,也可以創建新數據庫。單擊 Create(創建)按鈕后,將顯示 Create New SQL Server 2005 Mobile Edition Database(創建新 SQL Server 2005 Mobile Edition 數據庫)對話框。圖 23 中,新數據庫創建在桌面計算機的“我的文檔”文件夾中。此外,在此對話框中,還可以加密數據庫并添加密碼以確保安全。在本文中,唯一要執行的操作

熱詞搜索:

上一篇:SQL Server數據庫的安全性控制策略
下一篇:綜合布線系統中的屏蔽技術

分享到: 收藏