更新:2007 年 11 月
本主題旨在讓您通過(guò)使用 Windows 窗體生成相對簡(jiǎn)單的 C# 程序來(lái)熟悉 Visual C# 速成版集成開(kāi)發(fā)環(huán)境 (IDE)的各個(gè)元素。Windows 窗體為您的項目提供構成標準 Windows 應用程序用戶(hù)界面 (UI)的各個(gè)組件,如對話(huà)框、菜單、按鈕及許多其他控件?;旧?,這些控件只是 .NET Framework 類(lèi)庫中的類(lèi)。使用 Visual C# 速成版中的“設計器”視圖,可以將控件拖動(dòng)到應用程序的主窗體上并調整其大小和位置。在執行此操作時(shí),IDE會(huì )自動(dòng)添加源代碼以創(chuàng )建適當的類(lèi)的實(shí)例并對其進(jìn)行初始化。
本示例演示如何創(chuàng )建您自己的 Web 瀏覽器應用程序,可以自定義此 Web 瀏覽器應用程序,添加個(gè)人喜愛(ài)的網(wǎng)站的快捷方式。
在本節中,您將學(xué)習如何完成下列任務(wù):
-
創(chuàng )建新的 Windows 窗體應用程序。
-
在“代碼”視圖和“設計器”視圖之間切換。
-
更改 Windows 窗體的屬性。
-
添加 MenuStrip 控件。
-
添加 Button 控件。
-
創(chuàng )建和填充 ComboBox 控件。
-
使用 WebBrowser 控件。
-
為控件創(chuàng )建事件處理程序。

創(chuàng )建 C# Windows 應用程序
-
在“文件”菜單上單擊“新建項目”。
將出現“新建項目”對話(huà)框。此對話(huà)框列出了 Visual C# 速成版能夠創(chuàng )建的不同的默認應用程序類(lèi)型。
-
選擇“Windows 窗體應用程序”作為您的項目類(lèi)型。
-
將應用程序的名稱(chēng)更改為“Web 瀏覽器”。
-
單擊“確定”。
Visual C# 速成版為項目創(chuàng )建一個(gè)按項目標題命名的新文件夾,然后在“設計器”視圖中顯示標題為 Form1 的新的 Windows 窗體??梢噪S時(shí)在該視圖和“代碼”視圖之間切換,方法是右擊設計圖面或代碼窗口,然后單擊“查看代碼”或“視圖設計器”。

在“設計器”視圖中看到的 Windows 窗體是將在應用程序打開(kāi)時(shí)打開(kāi)的窗口的可視表示形式。在“設計器”視圖中,可以將“工具箱”中的各個(gè)控件拖動(dòng)到窗體上。這些控件并不是真正“活動(dòng)”的;它們僅僅是可以很方便地在窗體上四處移動(dòng)至精確位置的圖像而已。
將控件拖放到窗體之后,Visual C# 在幕后運行,創(chuàng )建在程序運行時(shí)正確定位真實(shí)控件的代碼。這些源代碼包含在一個(gè)文件中,該文件通常嵌套在其他對象中,因而無(wú)法看到。如果展開(kāi) Form1.cs,會(huì )在“解決方案資源管理器”中看到該文件,它的名稱(chēng)為 Form1.designer.cs。
-
如果在“代碼”視圖中,則可以切換到“設計器”視圖,方法是右擊代碼窗口,然后單擊“視圖設計器”?,F在可以更改 Windows 窗體的大小。
-
單擊 Windows 窗體的右下角。
-
當指針變?yōu)殡p向箭頭時(shí),拖動(dòng)窗體的角,直到其長(cháng)和寬至少為屏幕的四分之一。
由于這是將用來(lái)顯示網(wǎng)頁(yè)的窗口,因此它不應太狹窄。
-
-
確保顯示“屬性”窗口。該窗口的默認位置在 IDE 的右下部,但您可以根據需要移動(dòng)到其他位置。在下圖中該窗口位于右上角。如果沒(méi)有顯示“屬性”窗口,請單擊“視圖”菜單上的“屬性”窗口。該窗口列出了當前所選的 Windows 窗體或控件的屬性,并且您可以在此處更改現有的值。
-
更改 Windows 窗體的標題。
-
單擊窗體將其選定。
-
在“屬性”窗口中,向下滾動(dòng)到“Text”,選擇文本“Form1”并鍵入“Web 瀏覽器”。
-
按 Enter 或 Tab 將焦點(diǎn)移出“Text”文本框。
現在,您會(huì )看到 Windows 窗體頂部的文本(在稱(chēng)為標題欄的區域中)已更改。

若要快速更改控件的名稱(chēng),請右擊相應控件,然后單擊“屬性”??梢栽?span id="n0c3xje" class="ui">“名稱(chēng)”屬性中鍵入該控件的新名稱(chēng)。
-
-
單擊工具欄上的“工具箱”按鈕,或者在“視圖”菜單上單擊“工具箱”。向下滾動(dòng)控件列表并展開(kāi)“菜單和工具欄”,直到看到 MenuStrip。將此控件拖到 Windows 窗體上的任何位置。

此控件在窗體的頂部創(chuàng )建一個(gè)默認菜單。
-
在顯示“請在此處鍵入”的框中,鍵入菜單名稱(chēng),在本例中為“導航”。按 Enter 鍵時(shí),將出現新的空框以創(chuàng )建其他菜單和菜單項。在位置較低的框中,鍵入“主頁(yè)”。按 Enter,將顯示更多的框。鍵入“返回”。按 Enter 鍵,并鍵入“前進(jìn)”。

這些菜單項構成基本的網(wǎng)站導航控件。
-
添加按鈕。
在“工具箱”的“公共控件”類(lèi)別中,將一個(gè) Button 控件拖動(dòng)到大約在 Windows 窗體中間的位置,緊靠菜單欄下。在“屬性”窗口中,將“Text”屬性更改為“轉到”而不是“button1”,并將類(lèi)似“(名稱(chēng))”的設計名稱(chēng)從“button1”更改為“轉到按鈕”。
-
添加“組合框”。
在“工具箱”的“公共控件”類(lèi)別中,拖動(dòng) ComboBox 控件并將它放置到新按鈕的左側。拖動(dòng)邊緣和角以調整該“組合框”的大小和位置,直到它與按鈕對齊。
說(shuō)明:
在 Windows 窗體上移動(dòng)控件時(shí),將出現藍色的線(xiàn)條。這些線(xiàn)條是幫助您垂直和水平對齊控件的參考線(xiàn)。也可以通過(guò)一次選擇多個(gè)控件來(lái)對齊它們??梢酝ㄟ^(guò)如下方法來(lái)實(shí)現此目的:?jiǎn)螕舨⑼蟿?dòng)一個(gè)選擇框來(lái)包圍這些控件,或在按住 Shift 的同時(shí)單擊它們。選定多個(gè)控件后,可以使用對齊和調整大小圖標修改對齊方式和大小。這些圖標顯示在“設計”窗口頂部的“布局工具欄”上。
-
填充 ComboBox。
ComboBox 提供一個(gè)選項下拉列表,用戶(hù)可以從該列表中進(jìn)行選擇。在此程序中,ComboBox 將包含您收藏的用于快速訪(fǎng)問(wèn)的網(wǎng)站列表。
要創(chuàng )建站點(diǎn)列表,請選擇 ComboBox 并查看其屬性。選擇“Items”屬性,您將看到文字“(集合)”和一個(gè)省略號按鈕(“...”)。單擊此按鈕可更改 ComboBox 的內容。添加所需數量的網(wǎng)站 URL,在添加每個(gè) URL 后按 Return 鍵。
說(shuō)明:
請確保每個(gè)網(wǎng)站地址前面都包含 http://。
-
添加 WebBrowser 控件。
從“工具箱”的“公共控件”類(lèi)別中,向下滾動(dòng)直至找到 WebBrowser 控件。將該控件拖動(dòng)到 Windows 窗體。調整 WebBrowser 控件的大小,使其在 Windows 窗體中的大小合適,不會(huì )遮擋 ComboBox 和 Button 控件。如果不好調整 WebBrowser 控件的大小,請首先將它設置為所需的大小,打開(kāi)它的屬性,找到 Dock 設置,并確保將它設置為“無(wú)”。如果將 Anchor 設置設為“Top”、“Bottom”、“Left”、“Right”,則會(huì )使 WebBrowser 控件在您調整應用程序窗口的大小時(shí)適當地調整自己的大小。
WebBrowser 控件是執行呈現網(wǎng)頁(yè)的所有復雜工作的控件。在應用程序中通過(guò) WebBrowser 類(lèi)的實(shí)例來(lái)訪(fǎng)問(wèn)它。查看 form1.Designer.cs,您將看到應用程序代碼中已添加了此類(lèi)的一個(gè)實(shí)例,以及一些表示您使用設計器添加的其他項的類(lèi)的實(shí)例。在對控件添加事件處理程序和調用方法時(shí),將使用這些實(shí)例。
-
為 Button 事件添加事件處理程序。
現在,您已完成應用程序的設計階段,此時(shí)可以開(kāi)始添加一些代碼以提供程序的功能。
程序必須具有針對按鈕和每個(gè)菜單選項的事件處理程序。事件處理程序是在用戶(hù)與控件交互時(shí)執行的方法。Visual C# 速成版自動(dòng)為您創(chuàng )建空的事件處理程序。
雙擊該按鈕,將顯示項目的代碼編輯器。您還會(huì )看到已為您創(chuàng )建了 click 事件的事件處理程序,此事件是在用戶(hù)單擊按鈕時(shí)出現的事件消息。向此事件處理程序方法中添加代碼,以使它類(lèi)似于以下代碼。
C#private void goButton_Click(object sender, System.EventArgs e)
{
webBrowser1.Navigate(new Uri(comboBox1.SelectedItem.ToString()));
}此代碼獲取“ComboBox”控件的當前選定項(一個(gè)包含 Web URL 的字符串),并將其傳遞給 Web 瀏覽器的 Navigate 方法。Navigate 方法在該位置加載并顯示網(wǎng)頁(yè)的內容。
-
為 MenuStrip 選項添加事件處理程序。
返回“設計器”窗口,并依次雙擊菜單中的每個(gè)子項。Visual C# 速成版會(huì )為每個(gè)子項創(chuàng )建事件處理程序方法。編輯這些方法,使它們類(lèi)似于以下代碼。
C#private void homeToolStripMenuItem_Click(object sender, System.EventArgs e)
{
webBrowser1.GoHome();
}
private void goForwardToolStripMenuItem_Click(object sender, System.EventArgs e)
{
webBrowser1.GoForward();
}
private void goBackToolStripMenuItem_Click(object sender, System.EventArgs e)
{
webBrowser1.GoBack();
}其中每個(gè)菜單處理程序調用一個(gè)在 WebBrowser 類(lèi)上支持的導航方法。
說(shuō)明:
從這些代碼中可以看出,為菜單選項賦予的默認名稱(chēng)變得非?;靵y。因此,最好在創(chuàng )建每個(gè)菜單控件時(shí)使用“屬性”編輯器更改其名稱(chēng)。然后,處理程序的名稱(chēng)將反映菜單選項的名稱(chēng)。
-
請參見(jiàn) Visual C# 為您編寫(xiě)的代碼。
Visual C# IDE 已為您編寫(xiě)了初始化代碼。在“代碼”視圖中,找到 Form1 類(lèi)的構造函數。此構造函數的簽名為 public Form1()。右擊要從此構造函數內部調用的 InitializeComponent 方法,然后單擊“轉到定義”?,F在,您會(huì )看到在拖放控件和在“屬性”窗口中設置屬性時(shí)在后臺編寫(xiě)的所有代碼。
-
添加您自己的一些初始化代碼。
最后一個(gè)任務(wù)是將您自己的一些初始化代碼添加到 Form1。絕對不應使用構造函數來(lái)調用可能引發(fā)異常的任何代碼。因此,任何此類(lèi)代碼必須放在其他某一位置,即放在 Form1_Load 方法中。在代碼編輯器頂部單擊“Form1.cs[設計]”選項卡,以返回 Windows 窗體。選擇窗體并在“屬性”窗口中單擊“事件”按鈕(帶有閃電形狀的按鈕),再雙擊“加載”。這將添加一個(gè)事件處理程序方法并在“代碼”視圖中將光標定位到該方法中。
當用戶(hù)啟動(dòng)您的程序時(shí),Windows 將通過(guò)發(fā)送 Load 事件來(lái)通知您的應用程序的窗體。當窗體收到該事件時(shí),它將調用 Form1_Load 方法。為響應事件而調用的方法稱(chēng)為事件處理程序。系統將在適當的時(shí)間調用此事件;您的工作就是將代碼放入在此事件發(fā)生時(shí)要執行的事件處理程序中。
在“代碼”視圖中,向 Form1_Load 方法添加兩行代碼,如以下代碼所示。這將使 WebBrowser 控件顯示計算機的默認主頁(yè),還會(huì )設置 ComboBox 的初始值。
C#private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
webBrowser1.GoHome();
} -
生成并運行程序。
按 F5 生成并運行 Web 瀏覽器。屏幕上將顯示 Windows 窗體,然后該窗體將顯示計算機的默認主頁(yè)。您可以使用 ComboBox 控件選擇一個(gè)網(wǎng)站,然后單擊“Go”(轉到)以導航到該網(wǎng)站。菜單選項使您可以返回主頁(yè),或者在以前訪(fǎng)問(wèn)過(guò)的網(wǎng)站之間前后移動(dòng)。

如果您不熟悉 C# 編程,閱讀 C# 語(yǔ)言入門(mén) 節會(huì )是一個(gè)好方法。如果希望了解有關(guān) Visual C# 速成版開(kāi)發(fā)環(huán)境的更多信息,尤其是如何使用 IntelliSense 來(lái)創(chuàng )建控制臺應用程序的更多信息,請參見(jiàn)如何:創(chuàng )建 C# 控制臺應用程序。. 若要了解如何生成 Windows Presentation Foundation 應用程序的信息,請參見(jiàn)如何:創(chuàng )建 C# WPF 應用程序。

