如何:创建 C# Windows 窗体应用程序

更新:2007 年 11 月

本主题旨在让您通过使用 Windows 窗体生成相对简单的 C# 程序来熟悉 Visual C# 速成版集成开发环境 (IDE) 的各个元素。Windows 窗体为您的项目提供构成标准 Windows 应用程序用户界面 (UI) 的各个组件,如对话框、菜单、按钮及许多其他控件。基本上,这些控件只是 .NET Framework 类库中的类。使用 Visual C# 速成版中的“设计器”视图,可以将控件拖动到应用程序的主窗体上并调整其大小和位置。在执行此操作时,IDE 会自动添加源代码以创建适当的类的实例并对其进行初始化。

本示例演示如何创建您自己的 Web 浏览器应用程序,可以自定义此 Web 浏览器应用程序,添加个人喜爱的网站的快捷方式。

在本节中,您将学习如何完成下列任务:

  • 创建新的 Windows 窗体应用程序。

  • 在“代码”视图和“设计器”视图之间切换。

  • 更改 Windows 窗体的属性。

  • 添加 MenuStrip 控件。

  • 添加 Button 控件。

  • 创建和填充 ComboBox 控件。

  • 使用 WebBrowser 控件。

  • 为控件创建事件处理程序。

链接到视频 有关视频演示,请参见 Video How to: Create a C# Windows Forms Application(视频帮助:创建 C# Windows 窗体应用程序)。

创建 C# Windows 应用程序

  1. 在“文件”菜单上单击“新建项目”。

    将出现“新建项目”对话框。此对话框列出了 Visual C# 速成版能够创建的不同的默认应用程序类型。

  2. 选择“Windows 窗体应用程序”作为您的项目类型。

  3. 将应用程序的名称更改为“Web 浏览器”。

  4. 单击“确定”。

    Visual C# 速成版为项目创建一个按项目标题命名的新文件夹,然后在“设计器”视图中显示标题为 Form1 的新的 Windows 窗体。可以随时在该视图和“代码”视图之间切换,方法是右击设计图面或代码窗口,然后单击“查看代码”或“视图设计器”。

    ExpressForm1cs 屏幕快照

    在“设计器”视图中看到的 Windows 窗体是将在应用程序打开时打开的窗口的可视表示形式。在“设计器”视图中,可以将“工具箱”中的各个控件拖动到窗体上。这些控件并不是真正“活动”的;它们仅仅是可以很方便地在窗体上四处移动至精确位置的图像而已。

    将控件拖放到窗体之后,Visual C# 在幕后运行,创建在程序运行时正确定位真实控件的代码。这些源代码包含在一个文件中,该文件通常嵌套在其他对象中,因而无法看到。如果展开 Form1.cs,会在“解决方案资源管理器”中看到该文件,它的名称为 Form1.designer.cs。

  5. 如果在“代码”视图中,则可以切换到“设计器”视图,方法是右击代码窗口,然后单击“视图设计器”。现在可以更改 Windows 窗体的大小。

    1. 单击 Windows 窗体的右下角。

    2. 当指针变为双向箭头时,拖动窗体的角,直到其长和宽至少为屏幕的四分之一。

      由于这是将用来显示网页的窗口,因此它不应太狭窄。

  6. 确保显示“属性”窗口。该窗口的默认位置在 IDE 的右下部,但您可以根据需要移动到其他位置。在下图中该窗口位于右上角。如果没有显示“属性”窗口,请单击“视图”菜单上的“属性”窗口。该窗口列出了当前所选的 Windows 窗体或控件的属性,并且您可以在此处更改现有的值。

  7. 更改 Windows 窗体的标题。

    1. 单击窗体将其选定。

    2. 在“属性”窗口中,向下滚动到“Text”,选择文本“Form1”并键入“Web 浏览器”。

    3. 按 Enter 或 Tab 将焦点移出“Text”文本框。

    现在,您会看到 Windows 窗体顶部的文本(在称为标题栏的区域中)已更改。

    ExpressTextWebBrowser 屏幕快照

    若要快速更改控件的名称,请右击相应控件,然后单击“属性”。可以在“名称”属性中键入该控件的新名称。

  8. 单击工具栏上的“工具箱”按钮,或者在“视图”菜单上单击“工具箱”。向下滚动控件列表并展开“菜单和工具栏”,直到看到 MenuStrip。将此控件拖到 Windows 窗体上的任何位置。

    ExpressMainmenuForm 屏幕快照

    此控件在窗体的顶部创建一个默认菜单。

  9. 在显示“请在此处键入”的框中,键入菜单名称,在本例中为“导航”。按 Enter 键时,将出现新的空框以创建其他菜单和菜单项。在位置较低的框中,键入“主页”。按 Enter,将显示更多的框。键入“返回”。按 Enter 键,并键入“前进”。

    ExpressTypeHere 屏幕快照

    这些菜单项构成基本的网站导航控件。

  10. 添加按钮。

    在“工具箱”的“公共控件”类别中,将一个 Button 控件拖动到大约在 Windows 窗体中间的位置,紧靠菜单栏下。在“属性”窗口中,将“Text”属性更改为“转到”而不是“button1”,并将类似“(名称)”的设计名称从“button1”更改为“转到按钮”。

  11. 添加“组合框”。

    在“工具箱”的“公共控件”类别中,拖动 ComboBox 控件并将它放置到新按钮的左侧。拖动边缘和角以调整该“组合框”的大小和位置,直到它与按钮对齐。

    360kwx3z.alert_note(zh-cn,VS.90).gif说明:

    在 Windows 窗体上移动控件时,将出现蓝色的线条。这些线条是帮助您垂直和水平对齐控件的参考线。也可以通过一次选择多个控件来对齐它们。可以通过如下方法来实现此目的:单击并拖动一个选择框来包围这些控件,或在按住 Shift 的同时单击它们。选定多个控件后,可以使用对齐和调整大小图标修改对齐方式和大小。这些图标显示在“设计”窗口顶部的“布局工具栏”上。

  12. 填充 ComboBox

    ComboBox 提供一个选项下拉列表,用户可以从该列表中进行选择。在此程序中,ComboBox 将包含您收藏的用于快速访问的网站列表。

    要创建站点列表,请选择 ComboBox 并查看其属性。选择“Items”属性,您将看到文字“(集合)”和一个省略号按钮(“...”)。单击此按钮可更改 ComboBox 的内容。添加所需数量的网站 URL,在添加每个 URL 后按 Return 键。

    360kwx3z.alert_note(zh-cn,VS.90).gif说明:

    请确保每个网站地址前面都包含 http://。

  13. 添加 WebBrowser 控件。

    从“工具箱”的“公共控件”类别中,向下滚动直至找到 WebBrowser 控件。将该控件拖动到 Windows 窗体。调整 WebBrowser 控件的大小,使其在 Windows 窗体中的大小合适,不会遮挡 ComboBoxButton 控件。如果不好调整 WebBrowser 控件的大小,请首先将它设置为所需的大小,打开它的属性,找到 Dock 设置,并确保将它设置为“无”。如果将 Anchor 设置设为“Top”、“Bottom”、“Left”、“Right”,则会使 WebBrowser 控件在您调整应用程序窗口的大小时适当地调整自己的大小。

    WebBrowser 控件是执行呈现网页的所有复杂工作的控件。在应用程序中通过 WebBrowser 类的实例来访问它。查看 form1.Designer.cs,您将看到应用程序代码中已添加了此类的一个实例,以及一些表示您使用设计器添加的其他项的类的实例。在对控件添加事件处理程序和调用方法时,将使用这些实例。

  14. Button 事件添加事件处理程序。

    现在,您已完成应用程序的设计阶段,此时可以开始添加一些代码以提供程序的功能。

    程序必须具有针对按钮和每个菜单选项的事件处理程序。事件处理程序是在用户与控件交互时执行的方法。Visual C# 速成版自动为您创建空的事件处理程序。

    双击该按钮,将显示项目的代码编辑器。您还会看到已为您创建了 click 事件的事件处理程序,此事件是在用户单击按钮时出现的事件消息。向此事件处理程序方法中添加代码,以使它类似于以下代码。

    private void goButton_Click(object sender, System.EventArgs e)
    {
        webBrowser1.Navigate(new Uri(comboBox1.SelectedItem.ToString()));
    }
    

    此代码获取“ComboBox”控件的当前选定项(一个包含 Web URL 的字符串),并将其传递给 Web 浏览器的 Navigate 方法。Navigate 方法在该位置加载并显示网页的内容。

  15. MenuStrip 选项添加事件处理程序。

    返回“设计器”窗口,并依次双击菜单中的每个子项。Visual 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();
    }
    

    其中每个菜单处理程序调用一个在 WebBrowser 类上支持的导航方法。

    360kwx3z.alert_note(zh-cn,VS.90).gif说明:

    从这些代码中可以看出,为菜单选项赋予的默认名称变得非常混乱。因此,最好在创建每个菜单控件时使用“属性”编辑器更改其名称。然后,处理程序的名称将反映菜单选项的名称。

  16. 请参见 Visual C# 为您编写的代码。

    Visual C# IDE 已为您编写了初始化代码。在“代码”视图中,找到 Form1 类的构造函数。此构造函数的签名为 public Form1()。右击要从此构造函数内部调用的 InitializeComponent 方法,然后单击“转到定义”。现在,您会看到在拖放控件和在“属性”窗口中设置属性时在后台编写的所有代码。

  17. 添加您自己的一些初始化代码。

    最后一个任务是将您自己的一些初始化代码添加到 Form1。绝对不应使用构造函数来调用可能引发异常的任何代码。因此,任何此类代码必须放在其他某一位置,即放在 Form1_Load 方法中。在代码编辑器顶部单击“Form1.cs[设计]”选项卡,以返回 Windows 窗体。选择窗体并在“属性”窗口中单击“事件”按钮(带有闪电形状的按钮),再双击“加载”。这将添加一个事件处理程序方法并在“代码”视图中将光标定位到该方法中。

    当用户启动您的程序时,Windows 将通过发送 Load 事件来通知您的应用程序的窗体。当窗体收到该事件时,它将调用 Form1_Load 方法。为响应事件而调用的方法称为事件处理程序。系统将在适当的时间调用此事件;您的工作就是将代码放入在此事件发生时要执行的事件处理程序中。

    在“代码”视图中,向 Form1_Load 方法添加两行代码,如以下代码所示。这将使 WebBrowser 控件显示计算机的默认主页,还会设置 ComboBox 的初始值。

    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.SelectedIndex = 0;
        webBrowser1.GoHome();
    }
    
  18. 生成并运行程序。

    按 F5 生成并运行 Web 浏览器。屏幕上将显示 Windows 窗体,然后该窗体将显示计算机的默认主页。您可以使用 ComboBox 控件选择一个网站,然后单击“Go”(转到)以导航到该网站。菜单选项使您可以返回主页,或者在以前访问过的网站之间前后移动。

    MSN 示例屏幕快照

    如果您不熟悉 C# 编程,阅读 C# 语言入门 节会是一个好方法。如果希望了解有关 Visual C# 速成版开发环境的更多信息,尤其是如何使用 IntelliSense 来创建控制台应用程序的更多信息,请参见如何:创建 C# 控制台应用程序。. 若要了解如何生成 Windows Presentation Foundation 应用程序的信息,请参见如何:创建 C# WPF 应用程序

请参见

任务

如何:创建 C# 控制台应用程序

如何:创建 C# WPF 应用程序

概念

C# 语言入门

其他资源

创建您的第一个 Visual C# 应用程序

Visual C# 速成版提示和技巧