在 Windows 窗体应用程序中使用可绘制对象
我们已经讨论了可绘制对象类,下面谈谈如何在 Windows 窗体应用程序中使用这些类。首先谈一下 Windows 窗体应用程序是怎样工作的。
Windows 窗体应用程序的主要部分
简单的 Windows 窗体应用程序包含一个主窗口(或窗体),其中包含控件子项。如果您是一位 Visual Basic 程序员,就会发现这个模型非常熟悉。
主窗口
任何 Windows 窗体应用程序中的关键对象都是主窗口。该窗体将在应用程序的 static/Shared Main 方法中创建,如下所示。
在一个简单的 Windows 窗体应用程序(例如我们所编写的)中,所有其他控件都是此主窗体的子项。
按钮和文本框
我们的窗体具有一套按钮和一些文本框。每个按钮有一个处理程序,可以向列表中添加形状,并绘制列表。所包含的文本框用于显示如何从窗体中获得输入。还有一个分组框,提供了有关文本框和相关按钮的可视指示。
PictureBox
左边是最重要的控件:PictureBox。这是绘制和显示图像的位置。在 Windows 应用程序中,您可能需要随时重绘图像 -- 例如,如果窗口被最小化或被其他窗口覆盖,则再次显示窗口时便需要进行重绘。
在响应画图 (Paint) 消息时便会完成这种按需绘图,由父窗体窗口类中的一个事件处理程序处理。
Windows 窗体应用程序中的主要例程
我们简单看一下 Windows 窗体应用程序中的重要例程。请注意,用户界面的代码与可绘制对象的代码相比非常简短。这就是使用 .NET Framework 完成诸多工作的好处。(这也表明我们使用可绘制对象类完成的工作确实很好。)
窗体方法
窗体(或主窗口)是从 System.Windows.Forms.Form 中派生的,所以继承了其所有行为。所有这些控件都声明为这个类的成员,这样在清理类时它们也将被清理(清理是在 Dispose 方法中实际明确完成的)。
它还包含了我们所需数据的声明(DShapeList 和一个随机数生成器对象)、Main 以及用于按钮单击事件和 PictureBox 画图事件的事件处理程序。
Main
Main 的任务就是创建和运行主窗口对象。其 C# 代码如下所示。
C#
[STAThread]
static void Main()
{
Application.Run(new MainWindow());
}
STAThread 属性对于 Windows 窗体应用程序的 Main 非常重要 -- 您应当始终使用该项,以便依赖于 OLE Automation(例如拖放和剪贴板)的功能能够正常工作。
在 Microsoft Visual Studio? 生成的 Visual Basic .NET 源代码中不会找到此方法,但是如果使用 ILDASM 在 .exe 中查找,便会找到一个与上面所述功能相同的 Main -- 可能是由 Visual Basic .NET 编译器生成的。
InitializeComponent
在 Windows Form Designer generated code(Windows 窗体设计器生成的代码)下(如果不能看到此区域中的代码,单击小加号),会看到用于创建和初始化所有按钮和窗体上其他控件的代码。
数据声明/随机数生成
除了在代码的隐藏区域中声明的所有控件外,我们还需要声明两个变量:存放绘图列表的数据结构,以及一个 Random 类型的对象。我们使用 Random 对象为所创建的对象的位置生成随机数。
数据声明位于 MainWindow 类内,但位于任何方法之外。在 C# 和 Visual Basic .NET 中,其代码如下所示:
C#
DShapeList drawingList = new DShapeList();
Random randomGen = new Random();
Visual Basic
.NET Dim drawingList As New DShapeList()
Dim randomGen As New Random()
我们还编写了一个 helper 方法以获得一个随机点:
C#
private Point GetRandomPoint() {
return new Point(randomGen.Next(30, 320), randomGen.Next(30, 320));
}
Visual Basic
.NET Private Function GetRandomPoint() As Point
Return New Point(randomGen.Next(30, 320), randomGen.Next(30, 320))
End Function
它生成两个位于 30 和 320 之间的随机数,作为随机点的坐标。本U R L:http://www.qqread.com/aspdotnet/n222412.html
更多内容请看.NET移动与嵌入式技术、.NET开发手册、ASP.NET教程专题,或进入讨论组讨论。
我们已经讨论了可绘制对象类,下面谈谈如何在 Windows 窗体应用程序中使用这些类。首先谈一下 Windows 窗体应用程序是怎样工作的。
Windows 窗体应用程序的主要部分
简单的 Windows 窗体应用程序包含一个主窗口(或窗体),其中包含控件子项。如果您是一位 Visual Basic 程序员,就会发现这个模型非常熟悉。
主窗口
任何 Windows 窗体应用程序中的关键对象都是主窗口。该窗体将在应用程序的 static/Shared Main 方法中创建,如下所示。
在一个简单的 Windows 窗体应用程序(例如我们所编写的)中,所有其他控件都是此主窗体的子项。
按钮和文本框
我们的窗体具有一套按钮和一些文本框。每个按钮有一个处理程序,可以向列表中添加形状,并绘制列表。所包含的文本框用于显示如何从窗体中获得输入。还有一个分组框,提供了有关文本框和相关按钮的可视指示。
PictureBox
左边是最重要的控件:PictureBox。这是绘制和显示图像的位置。在 Windows 应用程序中,您可能需要随时重绘图像 -- 例如,如果窗口被最小化或被其他窗口覆盖,则再次显示窗口时便需要进行重绘。
在响应画图 (Paint) 消息时便会完成这种按需绘图,由父窗体窗口类中的一个事件处理程序处理。
Windows 窗体应用程序中的主要例程
我们简单看一下 Windows 窗体应用程序中的重要例程。请注意,用户界面的代码与可绘制对象的代码相比非常简短。这就是使用 .NET Framework 完成诸多工作的好处。(这也表明我们使用可绘制对象类完成的工作确实很好。)
窗体方法
窗体(或主窗口)是从 System.Windows.Forms.Form 中派生的,所以继承了其所有行为。所有这些控件都声明为这个类的成员,这样在清理类时它们也将被清理(清理是在 Dispose 方法中实际明确完成的)。
它还包含了我们所需数据的声明(DShapeList 和一个随机数生成器对象)、Main 以及用于按钮单击事件和 PictureBox 画图事件的事件处理程序。
Main
Main 的任务就是创建和运行主窗口对象。其 C# 代码如下所示。
C#
[STAThread]
static void Main()
{
Application.Run(new MainWindow());
}
STAThread 属性对于 Windows 窗体应用程序的 Main 非常重要 -- 您应当始终使用该项,以便依赖于 OLE Automation(例如拖放和剪贴板)的功能能够正常工作。
在 Microsoft Visual Studio? 生成的 Visual Basic .NET 源代码中不会找到此方法,但是如果使用 ILDASM 在 .exe 中查找,便会找到一个与上面所述功能相同的 Main -- 可能是由 Visual Basic .NET 编译器生成的。
InitializeComponent
在 Windows Form Designer generated code(Windows 窗体设计器生成的代码)下(如果不能看到此区域中的代码,单击小加号),会看到用于创建和初始化所有按钮和窗体上其他控件的代码。
数据声明/随机数生成
除了在代码的隐藏区域中声明的所有控件外,我们还需要声明两个变量:存放绘图列表的数据结构,以及一个 Random 类型的对象。我们使用 Random 对象为所创建的对象的位置生成随机数。
数据声明位于 MainWindow 类内,但位于任何方法之外。在 C# 和 Visual Basic .NET 中,其代码如下所示:
C#
DShapeList drawingList = new DShapeList();
Random randomGen = new Random();
Visual Basic
.NET Dim drawingList As New DShapeList()
Dim randomGen As New Random()
我们还编写了一个 helper 方法以获得一个随机点:
C#
private Point GetRandomPoint() {
return new Point(randomGen.Next(30, 320), randomGen.Next(30, 320));
}
Visual Basic
.NET Private Function GetRandomPoint() As Point
Return New Point(randomGen.Next(30, 320), randomGen.Next(30, 320))
End Function
它生成两个位于 30 和 320 之间的随机数,作为随机点的坐标。本U R L:http://www.qqread.com/aspdotnet/n222412.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- .NET移动与嵌入式技术 (5880篇文章)
- .NET开发手册 (5585篇文章)
- ASP.NET教程 (8343篇文章)
- .NET框架架构 (453篇文章)
- ASP.NET应用篇 (2591篇文章)
- asp.net 实现购物车详细代码 (14312次浏览)
- ASP.NET2.0轻松搞定统计图表 (651次浏览)
- 使用ASP.NET AJAX实现幻灯片效果 (604次浏览)
- ASP.NET如何存取 SQLServer数据库图片 (592次浏览)
- 如何制作Asp.Net界面模板 (582次浏览)
- ASP.NET中实现DataGrid数据排序 (580次浏览)
- 设计ASP.NET新闻管理系统 (424次浏览)
- ASP.NET 2.0加密Web.config 配置文件 (381次浏览)
- 网络编程ASP.NET的几个技巧 (374次浏览)
- ASP.NET的Request对象的属性介绍 (324次浏览)



