跳至内容

C# 编程/ .NET Framework/Windows 窗体

来自 Wikibooks,开放的书籍,为开放的世界

System.Windows.Forms

[编辑 | 编辑源代码]

要创建 Windows 桌面应用程序,我们使用由 System.Windows.Forms 命名空间表示的库。此命名空间中一些常用的类包括

  • Control - 通用类,其他有用的类(如 FormTextBox 和下面列出的其他类)都派生自此类
  • Form - 这是程序窗口的基本类。所有其他控件都直接放置在 Form 上,或者间接放置在最终驻留在 Form 上的另一个容器(如 TabPageTabControl)上。在 Visual Studio 中自动创建时,它通常被子类化,称为 Form1
  • Button - 可点击按钮
  • TextBox - 单行或多行文本框,可用于显示或输入文本
  • RichTextBox - 扩展的 TextBox,可以显示格式化的文本,例如,文本的一部分颜色或使用指定的字体。RichTextBox 还可以显示广义的 RTF 文档,包括嵌入的图像。
  • Label - 简单的控件,允许显示一行未格式化的文本,通常用于各种标题和标题
  • ListBox - 控件显示多个项目(文本行),可以选择项目并滚动浏览它
  • ComboBox - 与 ListBox 相似,但类似于下拉菜单
  • TabControlTabPage - 用于将控件分组在选项卡式界面中(非常类似于 Visual Studio 或 Mozilla Firefox 中的选项卡式界面)。TabControl 包含一个 TabPage 对象的集合。
  • DataGrid - 数据网格/表格视图

The Form 类 (System.Windows.Forms.Form) 是该命名空间中一个特别重要的部分,因为窗体是 Windows 应用程序的关键图形构建块。它提供了一个视觉框架,将按钮、菜单、图标和标题栏组合在一起。集成开发环境 (IDE) 如 Visual C# 和 SharpDevelop 可以帮助创建图形应用程序,但了解如何手动执行这一点很重要

using System.Windows.Forms;

public class ExampleForm : Form    // inherits from System.Windows.Forms.Form
{
    public static void Main()
    {
        ExampleForm wikibooksForm = new ExampleForm();

        wikibooksForm.Text = "I Love Wikibooks";  // specify title of the form
        wikibooksForm.Width = 400;                // width of the window in pixels
        wikibooksForm.Height = 300;               // height in pixels
        Application.Run(wikibooksForm);           // display the form
    }
}

上面的示例创建了一个简单的窗口,标题栏中显示文本“我爱 Wikibooks”。类似上面的自定义窗体类继承自 System.Windows.Forms.Form 类。设置任何属性 TextWidthHeight 是可选的。即使您将这些代码注释掉,程序也会编译并成功运行,但它们允许我们对窗体添加额外的控制。

事件是在用户或计算机执行操作(例如,单击按钮,鼠标悬停在图像上等)时程序采取的操作。事件处理程序是一个对象,它决定在触发事件时应采取的操作。

using System.Windows.Forms;
using System.Drawing;

public class ExampleForm : Form    // inherits from System.Windows.Forms.Form
{
    public ExampleForm()
    {
        this.Text = "I Love Wikibooks";           // specify title of the form
        this.Width = 300;                         // width of the window in pixels
        this.Height = 300;                        // height in pixels

        Button HelloButton = new Button();
        HelloButton.Location = new Point(20, 20); // the location of button in pixels
        HelloButton.Size = new Size(100, 30);     // the size of button in pixels
        HelloButton.Text = "Click me!";           // the text of button

        // When clicking the button, this event fires
        HelloButton.Click += new System.EventHandler(WhenHelloButtonClick);

        this.Controls.Add(HelloButton);
    }

    void WhenHelloButtonClick(object sender, System.EventArgs e)
    {
        MessageBox.Show("You clicked! Press OK to exit this message");
    }

    public static void Main()
    {
        Application.Run(new ExampleForm());       // display the form
    }
}


Windows 窗体命名空间包含许多非常有趣的类。其中最简单且最重要的类之一是 Form 类。窗体是任何 Windows 应用程序的关键构建块。它提供了一个视觉框架,将按钮、菜单、图标和标题栏组合在一起。窗体可以是模态的和非模态的,所有者和被拥有的,父级和子级。虽然可以使用记事本创建窗体,但使用 VS.NET、C# Builder 或 Sharp Develop 之类的窗体编辑器可以使开发速度更快。在本课中,我们不会使用 IDE。相反,将下面的代码保存到文本文件并使用命令行编译器编译。

using System.Windows.Forms;
using System.Drawing;

public class ExampleForm : Form    // inherits from System.Windows.Forms.Form
{
    public ExampleForm()
    {
        this.Text = "I Love Wikibooks";         // specify title of the form
        this.BackColor = Color.White;
        this.Width = 300;                       // width of the window in pixels
        this.Height = 300;                      // height in pixels

        // A Label
        Label TextLabel = new Label();
        TextLabel.Text = "One Label here!";
        TextLabel.Location = new Point(20, 20);
        TextLabel.Size = new Size(150, 30);
        TextLabel.Font = new Font("Arial", 12); // See! we can modify the font of text
        this.Controls.Add(TextLabel);           // adding the control to the form

        // A input text field
        TextBox Box = new TextBox();            // inherits from Control
        Box.Location = new Point(20, 60);       // then, it have Size and Location properties
        Box.Size = new Size(100, 30);
        this.Controls.Add(Box);                 // all class that inherit from Control can be added in a form
    }

    public static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new ExampleForm());     // display the form
    }
}
华夏公益教科书