使用Visual Studio 2005设计设备应用程序的用户界面和数据(5)

http://developer.51cto.com  2007-01-24 15:57  Maarten Struys  51CTO.com  我要评论(0)
  • 摘要:了解Visual Studio 2005中有关用于.NET Compact Framework 2.0应用程序的用户界面和数据库设计的新增功能。本文将介绍新的开发环境,特别是新的Visual Studio 2005 Windows窗体设计器;还将提供有关Visual Studio 2005中即装即用的新控件的简短指导教程,您将了解使用这些控件创建同时支持纵向模式和横向模式的应用程序有多么简单。
  • 标签:VS 2005  界面  数据

可视窗体继承

在过去几年中,许多设备开发人员都请求了窗体继承的可视支持。在 Visual Studio .NET 2003 中,智能设备项目不支持可视窗体继承,尽管从另一个窗体继承一个窗体时您可以使用 C# 预处理器进行条件编译来提供相当有限的设计器支持(如果您很有创意)。相反,Visual Studio 2005 对可视窗体继承提供了完全设计器支持。这是一个优秀的新增功能,使您可以重用和扩展窗体,而无需不断地从头开始创建新窗体。

要显示可视窗体继承,请从您以后能够使用其派生其他窗体的简单基本窗体开始。虽然这不是必须的,但是对创建承载基本窗体的单独类库很有用。如果将基本窗体创建为项目的一部分,则该窗体不是在其他应用程序中重用的理想对象。此外,Visual Studio 中的窗体设计器必须能够读取基本窗体的元数据才能够显示从其派生的窗体,也就是说如果基本窗体与派生窗体包含在同一项目中,则必须进行额外的编译才能将基本窗体用于继承。在单独的库中创建基本窗体时,则无需执行此操作。

请务必提早考虑基本窗体,尤其应该了解哪些控件可以在继承的窗体中修改,哪些控件不可以修改。为了能够修改控件或控件的行为,必须确保将特定控件的访问修饰符设置为 private 之外的值。派生窗体中专用控件的属性无法更改。图 19 显示了以后可以在应用程序中使用的简单基本窗体。

图19:存储在单独类库中的基本窗体

基本窗体包含一个专用按钮,单击该按钮时它将对每个派生窗体执行同一操作。由于此按钮是 private 的,因此在派生窗体中无法访问该按钮及其成员。基本窗体还包含一个受保护的按钮,具有一个作为虚方法实现的事件处理程序。和其他虚方法一样,事件处理程序也可以在各个派生窗体中被替换。因为第二个按钮是受保护的,所以在派生窗体中可以访问该按钮及其成员。您甚至可以决定在派生窗体中创建单独的单击事件处理程序,生成正在执行的基本窗体和派生窗体的事件处理程序。最后,基本窗体还包含一个受保护的标签,表明可以从所有派生窗体中访问该标签。请注意,图 19 中的基本窗体不包含菜单。默认情况下,设计器在每个新创建的窗体上都创建一个名为 mainMenu1 的菜单控件。可以在基本窗体中创建一个菜单,甚至可以在派生窗体中扩展该菜单。但是,在删除派生窗体上的菜单以及将基类中菜单的访问属性设置为 Protected 或 Public 时要谨慎。

基本窗体中包含能够在派生窗体间共享的一些常用功能,如下面的代码示例所示。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BaseFormLibrary
{
public partial class BaseForm :Form
{
public BaseForm()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
label1.Text = "所有窗体上的相同操作";
}

protected virtual void button2_Click(object sender, EventArgs e)
{
label1.Text = "默认操作";
}
}
}

BaseForm 方法包含两个按钮单击事件处理程序。button1_Click 处理程序是 private 方法,不能替换。如果将 button1_click 作为 private 方法实现,在单击 button1 时,将导致始终对每个派生窗体执行同一操作。但是,可以将 button1_Click 事件处理程序创建为受保护虚方法。在那种情况下,可以替换派生窗体中的 button1_Click 事件处理程序 — 使其具有对该特定窗体的特定功能。

button2_Click 事件处理程序的修饰符更加有趣。虽然窗体设计器生成的代码创建了访问修饰符设置为 private 的 button2_Click 事件处理程序,但是您可以在源文件中修改事件处理程序声明。通过将 button2_Click 事件处理程序声明为受保护虚方法,可以在派生窗体中替换该程序,从而导致单击 button2 时执行它们的事件处理程序。如果派生窗体中未替换 button2_Click 事件处理程序,将执行基本窗体的 button2_Click 事件处理程序。这正是从基类派生类时的预期行为。因为 button2 声明受保护,所以在以后的代码示例中更有可能不显示。Button2 声明受保护后,派生窗体可以访问其属性和事件,包括单击事件。因此,还可以向单击事件添加另一个事件处理程序,从而导致执行基本窗体的事件处理程序和派生窗体的事件处理程序。

要使用基本窗体,可以创建一个新的智能设备项目,然后向其中的 BaseFormLibrary 程序集添加引用。如果创建的新智能设备项目为 Device Application 类型,则设计器将自动向该项目添加窗体。此窗体是从 System.Windows.Forms.Form 派生的。要从基本窗体派生,请向窗体的源文件添加“BaseFormLibary”命名空间的 using 声明,然后只修改窗体源代码中窗体的声明,例如将

public partial class Form1 :Form

更改为:

public partial class Form1 :BaseForm

时,将从以前创建的基本窗体中派生应用程序中的窗体。查看设计器视图中的窗体时,您将看到基类中所有控件以及专门为此特定窗体添加的控件,如图 20 所示。

图20:包含基本窗体中的控件且具有完全设计器支持的派生窗体


共8页: 上一页 [1] [2] [3] [4] 5 [6] [7] [8] 下一页
【内容导航】
 第 1 页:简介  第 2 页:拆分器控件
 第 3 页:设置 Tab 键顺序  第 4 页:更改设备外观设置
 第 5 页:可视窗体继承  第 6 页:使用 Visual Studio 数据库工具
 第 7 页:数据源配置向导  第 8 页:结论
重复数据删除技术
Sun以10亿美元并购开源数据库厂商MySQL
Oracle数据库开发之PL/SQL基础应用
Oracle数据库开发基础教程
2006年数据库频道热点关注
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有