- C#入門經典(第7版):C# 6.0 & Visual Studio 2015(.NET開發經典名著)
- (美)Beijamin Perkins Jacob Vibe Hammer Jon D. Reid
- 1209字
- 2021-04-02 21:18:43
8.3 桌面應用程序中的OOP
第2章在C#中使用Windows Presentation Foundation(WPF)創建了一個簡單的桌面應用程序。WPF桌面應用程序非常依賴OOP技術,本節將論述OOP技術,說明本章的一些論點。下面通過一個簡單示例加以說明。
試一試:使用對象:Ch08Ex01
(1)在C:\BegVCSharp\Chapter08目錄中創建一個新的WPF應用程序Ch08Ex0l。
(2)使用Toolbox添加一個新的按鈕控件,使其位于MainWindow的中央,如圖8-12所示。

圖8-12
(3)雙擊按鈕,為鼠標單擊事件添加代碼。修改代碼,如下所示:
private void Button_Click_1(object sender, RoutedEventArgs e) { ((Button)sender).Content = "Clicked! "; Button newButton = new Button(); newButton.Content = "New Button! "; newButton.Margin = new Thickness(10, 10, 200, 200); newButton.Click += newButton_Click; ((Grid)((Button)sender).Parent).Children.Add(newButton); } private void newButton_Click(object sender, RoutedEventArgs e) { ((Button)sender).Content = "Clicked! ! "; }
(4)運行應用程序,窗口如圖8-13所示。

圖8-13
(5)單擊標記為Button的按鈕,顯示內容將隨之變化,如圖8-14所示。

圖8-14
(6)單擊標記為New Button!的按鈕,顯示內容將隨之變化,如圖8-15所示。

圖8-15
示例說明
僅添加幾行代碼,就創建了一個可以完成某項任務的桌面應用程序。下面說明C#中的一些OOP技術。即使在談到桌面應用程序時,“一切皆對象”這句話也是正確的。從運行的窗體,到窗體上的控件,都需要使用OOP技術。這個示例重點說明本章前面介紹的一些概念,解釋如何把它們組合在一起。
在應用程序中,首先在MainWindow窗口中添加一個新按鈕,這個按鈕是一個對象,它是Button類的一個實例;窗口是MainWindow類的實例,該類從Window類派生而來。接著雙擊按鈕,添加一個事件處理程序,監聽Button類提供的Click事件。這個事件處理程序被添加到封裝應用程序的MainWindow對象代碼中,是一個私有方法:
private void Button_Click_1(object sender, RoutedEventArgs e) { }
這段代碼使用C#關鍵字private作為修飾符?,F在不要考慮這個關鍵字,第9章將詳細解釋本章提及的OOP技術。
我們添加的第一行代碼改變了所單擊按鈕上的文本。它利用了本章前面討論的多態性。表示按鈕的Button對象作為一個object參數發送給事件處理程序,該事件處理程序把參數強制轉換為Button類型(這是可能的,因為Button對象繼承于System.Object, System.Object是一個.NET類,object是其別名)。然后修改對象的Content屬性,改變顯示的文本:
((Button)sender).Content = "Clicked! ";
接著用new關鍵字創建一個新的Button對象(注意在這個項目中設置了名稱空間,因此可以使用這個簡單的語法,否則就需要使用這個對象的完整限定名System.Windows.Forms.Button):
Button newButton = new Button();
還可以將新建的Button對象的Content和Margin屬性設置為合適的值,使按鈕顯示在合適的地方。注意,Margin屬性的類型是Thickness,因此使用非默認構造函數創建一個Thickness對象,然后將其賦值給Margin屬性:
newButton.Content = "New Button! "; newButton.Margin = new Thickness(10, 10, 200, 200);
在代碼的其他地方添加一個新的事件處理程序,以響應新按鈕生成的Click事件:
private void newButton_Click(object sender, RoutedEventArgs e) { ((Button)sender).Content = "Clicked! ! "; }
接著使用重載運算符語法,把這個事件處理程序注冊為Click事件的監聽程序:
newButton.Click += newButton_Click;
最后,把新按鈕添加到窗口中。為此,使用已有按鈕的Parent屬性找出其父對象,將其轉換為正確類型,即Grid。然后,通過將新按鈕作為參數傳遞給Grid.Children屬性的Add()方法,將該按鈕添加到窗口中:
((Grid)((Button)sender).Parent).Children.Add(newButton);
這些代碼實際上沒有看起來那樣復雜。一旦理解了WPF是通過一個控件(包括按鈕和容器)的層次結構來顯示窗口的內容,使用這類代碼就顯得再自然不過。
這個簡短示例幾乎使用了本章介紹的所有技術??梢钥闯?,OOP編程并不復雜—— 只需要從另一個角度來看待編程即可。
- Mastering Entity Framework Core 2.0
- 軟件項目估算
- Pandas Cookbook
- ASP.NET Core 5.0開發入門與實戰
- Visual Basic程序開發(學習筆記)
- 區塊鏈架構與實現:Cosmos詳解
- Processing互動編程藝術
- 你必須知道的204個Visual C++開發問題
- Python編程與幾何圖形
- Access 2010數據庫應用技術(第2版)
- Rust游戲開發實戰
- Application Development with Parse using iOS SDK
- Implementing Microsoft Dynamics NAV(Third Edition)
- Mastering Machine Learning with R
- Zend Framework 2 Cookbook