UML软件工程组织

掌握 C#
转自:www.microsoft.com 作者:John Kennedy

摘要:John Kennedy 将向您介绍如何使用 Visual Studio .NET 和 .NET Framework 向 Pocket PC 应用程序中添加菜单和控件,以帮助您进一步掌握 C# 技术。

应该说,从 C/C++ 发展到 C#,进而到 Microsoft .NET Framework,对于习惯使用 C/C++ 的程序员来说是一次小小的打击。换句话说,C# 编程将带来翻天覆地的变化,不仅要完成范例转换,还要完成程序模型的重建以及其他各种令人难以捉摸的词组转变。但是,随着新一年的到来,不正是学习新编程语言的好时机吗?

我现在实在是抽不出时间教您如何使用 C# 进行编程。至于您打算如何学习这种语言完全取决于您的个人习惯。例如,我相信有些人一定喜欢那种纯理论式的学习方法,手捧一本看似优秀实则枯燥乏味的教科书,书中尽是些晦涩难懂的语言示例。我并不喜欢这种方法。我喜欢通过编写应用程序,并将编译器错误消息作为指南来学习语言。如果您也喜欢这种方法,建议您选择 Mickey Williams 撰写的《Microsoft Visual C# .NET》(Microsoft Press 出版,ISBN 0-7356-1290-0)。尽管这部著作不是针对 Pocket PC 撰写的,但其中包含了优秀的 C# 语言速成课程,以及 .NET Framework 主要功能的使用方法。您会发现其中的许多内容都与 Pocket PC 有关,这将成为您学习的良好开端。学习 C# 不一定象您想象的那么困难,通过该书中的具体示例,您很快便会掌握如何将各种功能组合成应用程序。

本页内容
菜单的用途 菜单的用途
添加简单控件 添加简单控件
需要一个漂亮的窗体吗? 需要一个漂亮的窗体吗?
将值传递到其他窗体中的控件 将值传递到其他窗体中的控件
想要加一些选项卡吗? 想要加一些选项卡吗?
一切尽在掌握之中 一切尽在掌握之中

菜单的用途

当您完成 C# 编程的“Hello world”阶段后,最好再添加一些用户交互。这样您就可以快速编写条件代码,以便执行多个任务。此外,快速掌握 Pocket PC Framework 实现中提供的许多用户界面控件也是十分必要的。毕竟,用户界面是用户最常见到的。

对程序员来说,菜单也很有用。我喜欢在开发时保留一个菜单,用于启动当前正在测试的代码。可使用菜单作为调用某些程序内部工作的快捷方式。一切运行正常后,我可以删除此菜单(如果更巧妙一点,可使用条件代码使此菜单仅在“调试”模式出现)。

如果您能够访问 .NET Framework 精简版(如果无法访问,您很快便会看到下一版本的 Visual Studio® .NET),可以使用新的项目向导,创建默认的 C# 智能设备可编程 PC 应用程序来分享其中的乐趣。然后我们将添加一个菜单 - 只需使用 Visual Studio IDE 即可轻松实现。事实上,最新版本的 Visual Studio 提供了一个更新的设计器,要创建菜单,只需将菜单对象从工具箱拖放到窗体上即可。然后,只需输入要显示的文本。

road01082003-fig01.gif

图 1:添加菜单就象系鞋带一样简单。只需拖放,键入,然后单击。真是太容易了!

要输入一些实际代码,只需双击菜单项本身即可。随即进入窗体的代码视图中,其中显示了菜单选项将执行的功能。在以下示例中,我添加了一行使程序退出的代码。尽管这样做不符合应用程序的 Pocket PC 模型(该模型不退出应用程序,而是隐藏它,然后在需要时再显示),但我认为在开发时能够终止应用程序是很有用的。如果稍有不慎,则每次将新代码下载到设备(模拟设备或实际设备)时,现有代码都会妨碍新代码的运行。因此,用一种快速方法关闭正在运行的程序是非常方便的。

    static void Main()
   {
      Application.Run(new Form1());
   }
   private voic menuItem2_Click(object sender, System.EventArgs e)
   {
      Application.Exit();
   }
}

添加简单控件

编写自己的应用程序时,很快就需要添加一些供用户使用的控件。控件是物理开关和按钮的软件实现。在考虑添加控件时,您会觉得我们花大量时间生成开关和按钮的虚拟表示形式,是件很有意思的事情。以单选按钮为例,它是一种外观类似小圆坑的互斥控件,此类控件以 20 世纪 70 年代的汽车收音机(上面安装了粗大的机械开关,用于选择无线电台,现在已经完全淘汰)为模型,至今仍用于软件中。

不管怎样,我介绍了太多的软件哲学(我想这是深受《Microserfs》的作者 Douglas Copeland 和《The Design of Everyday Things》的作者 Donald A. Norman 的影响,建议您也读读这两本书)。下面让我们来谈谈技术,.NET Framework 包含一个抽象的 Control 类,从中可以派生出各种 UI 控件。按钮、列表框、组合框、单选按钮、复选框等,均从此类派生。甚至窗体本身(即作为应用程序基础的窗口),也是从 Control 类派生的。

您关心这些内容吗?很可能并不关心,因为您只需再次从 UI 设计器中执行拖放操作,将所需的控件放入主窗体中即可。当然,在界面设计以外,您还需要进行一些编程工作,这就是我们下面要介绍的内容。

需要一个漂亮的窗体吗?

程序很少只以一个窗口或窗体的形式出现。大多数程序会弹出对话框、状态框、消息框和其他一些供用户查看的信息显示。即使在空间有限的 Pocket PC 屏幕上,也有必要向其中添加多个信息“层”。

在应用程序中添加新窗体很简单。从 Visual Studio .NET IDE 中,选择 Project(项目),单击右键,然后选择 Add(添加)和 Add Windows Form(添加 Windows 窗体)。您将看到下面显示的窗口,然后只需选择一个提示性的名称即可。

road01082003-fig02.gif

图 2:要在项目中添加一个新窗体吗?这很简单。使用此窗体在现有 Windows 窗体中添加一个新的派生窗体。

这个新窗体将作为项目中的另一个窗体。当然,每个窗体都可以按照设计格式或代码格式查看。默认情况下,新窗体从不被实例化。启动应用程序时,实际只调用并显示默认窗体。换句话说,如果您在程序中添加了新的窗体,则可以自行决定是否打开它。如果不打开,它将只作为一种资源存在,没有人会看见它。

下面是一种打开新窗体的方法。将按钮拖到第一个窗体(默认名称为 Form1),双击该按钮,创建在用户单击它时调用的代码。现在,请添加以下代码,调用并显示新窗体:

MyNewForm mynewformForm = new MyNewForm ();
         
mynewformForm.ShowDialog();

我在这里使用的是 ShowDialog() 方法,但如果您要创建无模式窗口(在 Pocket PC 编程中并非最佳做法),您也可以使用 Show() 方法。无模式窗口以某种方式悬浮,在应用程序继续运行之前无需关闭该窗口。工具选项板就是一个很好的示例。但在 Pocket PC 的小屏幕上,这种窗口只会使屏幕变得混乱,而没有多大用处。

将值传递到其他窗体中的控件

在实际操作(而不是那些深奥的代码示例)中,您很可能要向新打开的窗体中发送信息,然后获得一些响应信息。

假设您要求用户在文本框中输入字符串。您可能需要预先加载一个包含某些现有文本的文本框,允许用户对其进行编辑,然后检索新的文本。

让我们演示一下如何通过更改文本标签来设置控件值。事件序列如下:

1.

创建包含控件(但不显示此控件)的窗体的新实例。

2.

更改与控件文本标签相对应的属性。

3.

显示窗体。

假设我们已经在新窗体中添加了 label1 文本标签,我们可以使用如下代码完成以上所有操作:

MyNewForm mynewformForm = new MyNewForm ();
mynewformForm.label1.Text = "Hello World";
mynewformForm.ShowDialog();

唯一要记住的是,默认情况下 label1 属性是私有属性,因此,主窗体中的代码将看不到它。为解决此问题,我使用 Properties(属性)对话框将其设置为 Public,结果运行良好。

road01082003-fig03.gif

图 3:新窗体创建完毕。您可以看到,我添加了一个用于关闭此窗体的按钮。

注意:窗体的大小并不重要,因为 Pocket PC 总是将其扩展到整个屏幕。

如果要创建一个对话框形式的新窗体,还应该为用户提供关闭它的方法,例如一个附加了以下代码的新按钮:

private void button1_Click(object sender, System.EventArgs e)
      {
         this.Close();
      }

除非出现错误,否则新窗体的右上角将出现一个关闭按钮,用户单击它便可关闭窗体。

想要加一些选项卡吗?

我要讨论的是那些小选项卡,使用它们可以访问一个对话框中存储的多个页面。如果应用程序有许多需要用户完成的设置,这些选项卡会非常有用。

在您“大肆”使用选项卡之前,我想请您先考虑一下为什么程序会有如此多的选项。要知道 Pocket PC 可不是台式计算机,它是一种便携式电脑,我们真的需要在上面放置如此多的选项、控件和开关吗?

如果您确信需要所有这些控件(别担心,我相信您确实需要),那么使用选项卡控件可能比较合适。看到添加选项卡控件是如此简单时,我感到非常高兴,因为所有复杂工作都不需要您亲自去做。就象将一组单独的窗体合并成一个窗体一样。

以下是在程序中添加选项卡控件的步骤。您可以将新控件拖至添加的每个新选项卡中,使其便于组织和操作。

将选项卡控件拖到窗体的上方。看到了吗?我曾告诉过您这很简单。

在 Properties(属性)窗口的 TabPages 上单击,以显示 Tab 控件的各种设置。

使用 TabPage Collection Editor(选项卡集合编辑器)添加并重命名新的选项卡。每个选项卡都类似一个空白窗体,可以向其中添加控件。

将每个选项卡视为窗体,并将控件放在合适的位置。Pocket PC 将自动显示所有这些选项卡和控件。这真是再简单不过了。

road01082003-fig04thumb.gif
图 4:TabPage Collection Editor(选项卡集合编辑器)有一个长标题和许多设置,但是使用起来十分简单。

road01082003-fig05.gif

图 5:这就是 TabPage 控件在 Pocket PC 设备上的外观。很整洁吧?现在您可以添加多个选项卡了,但愿您的用户坐在颠簸的公共汽车上使用这些选项卡时不会怨声载道。

一切尽在掌握之中

希望您已经了解,在 Pocket PC 应用程序中添加一些 UI 控件其实很简单。我正在忙着建立一个数据库,其中很多是 Pocket PC 开发人员使用 C# 实现时遇到的难题,几个月之后,我将向您展示这一成果。当您遇到问题时,可随时写信给我,我将向 Microsoft 的专家组请教这些问题。总之,我们将尽量使您平稳过渡到 C#。

 

 

版权所有:UML软件工程组织