你好 Longhorn






3.32/5 (32投票s)
2004年3月2日
3分钟阅读

130585

281
Longhorn下的编程入门。
引言
本文向您介绍为下一版本的Windows(代号为Longhorn)进行编程。(为了理解代号术语,请阅读微软新代号的困惑指南。)现在回到正题,Longhorn发布后将以重要方式改变开发人员的格局。虽然来自COM(难道不够老吗?),.NET(再见WinForms)的大多数旧东西都可以顺利运行,但Avalon,WinFS,Indigo等新技术提供了更好,更丰富的工作基础。
我将带您完成一个非常简单的程序,该程序响应按钮控件上的点击并显示“Hello Longhorn”。该代码完全用C#编写。我使用MSBuild来编译我的代码(我仍然没有接触到Whidbey)。在本文的续集中,我将向您展示如何使用XAML以一种新的革命性的方式编写相同的程序。但就目前而言,让我们坚持使用普通的C#。
进入正题
下图是我们的杀手级应用程序的样子。通过观察它,如果您发现它有一个窗口,一个按钮和一个文本框,那么就拍拍自己,因为这就是它的全部。它还有另一个好东西叫做Canvas
,我稍后会告诉您。
好了,既然您已经完成了对这件非凡艺术品的观看,我将向您展示它是如何完成的。
像往常一样,我们从我们的import语句开始
using System;
using MSAvalon.Windows;
using MSAvalon.Windows.Controls;
接下来,我们创建一个类
public class TextBoxApp : Application
Application
是顶级对象,所有应用程序都应从此类继承。您也可以从NavigationApplication
类继承以用于Longhorn导航应用程序。
接下来,我声明一些控件
MSAvalon.Windows.Controls.TextBox myTextBox;
MSAvalon.Windows.Controls.Button myButton;
MSAvalon.Windows.Controls.Canvas myCanvas;
虽然我在顶部有我的import语句,但我仍然喜欢使用完整的命名空间。我觉得这有助于我了解新的框架。
然后,我们重写基类中的一个方法,该方法是Application
类。此方法始终在应用程序启动时调用。
protected override void OnStartingUp(StartingUpCancelEventArgs e)
{
base.OnStartingUp(e); //call the method in the base class
CreateWindow(); //call a private method to create the window
}
现在,我们将实现我们的私有方法,这是应用程序的核心。此方法将创建一个窗口,放置一个Canvas
,然后将其他控件放在Canvas
的顶部。 Canvas
类位于MSAvalon.Windows.Controls
命名空间中,是Avalon(Longhorn下的新演示系统)中可用的面板之一。以下是完整的方法
private void CreateWindow()
{
//create main window
try
{
MSAvalon.Windows.Window myWindow = new MSAvalon.Windows.Window();
myWindow.Width = new Length(300);
myWindow.Height = new Length(170);
//Add a canvas to the window
myCanvas = new MSAvalon.Windows.Controls.Canvas();
myCanvas.Background = MSAvalon.Windows.Media.Brushes.LightSteelBlue;
myCanvas.Width = new Length(100,UnitType.Percent);
myCanvas.Height = new Length(100,UnitType.Percent);
myWindow.Children.Add(myCanvas);
//Add a Text Box to the canvas
myTextBox = new MSAvalon.Windows.Controls.TextBox();
myTextBox.Width = new Length(200);
myTextBox.Height = new Length(40);
MSAvalon.Windows.Controls.Canvas.SetTop(myTextBox, new Length(30));
MSAvalon.Windows.Controls.Canvas.SetLeft(myTextBox, new Length(50));
myCanvas.Children.Add(myTextBox);
//Add a button to the canvas
myButton = new MSAvalon.Windows.Controls.Button();
MSAvalon.Windows.Controls.Canvas.SetTop(myButton, new Length(100));
MSAvalon.Windows.Controls.Canvas.SetLeft(myButton, new Length(110));
myButton.Content = "Click Me";
myCanvas.Children.Add(myButton);
//Add a event handler for Click Event
myButton.Click += new ClickEventHandler(OnClick);
//show the window
myWindow.Show();
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
我会将您的注意力引到代码中的特定行
myButton.Content = "Click Me";
请注意,Button
控件没有Text
属性。
我还为myButton
的Click
事件指定了一个事件处理程序。此处理程序所做的就是更改我的文本框中的文本
void OnClick(object sender, ClickEventArgs e)
{
try
{
myTextBox.Text = "Hello Longhorn";
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
接下来,我们需要提供一个main
方法来运行我们的应用程序。我的main
方法在我的EntryClass
中。 我已将其标记为sealed
,因为我从不希望从此类继承(您无需这样做)。
public sealed class EntryClass
{
[System.STAThread()]
private static void Main ()
{
TextBoxApp app = new TextBoxApp ();
app.Run ();
}
}
由于我没有Whidbey,因此我使用MSBuild编译我的项目。您将需要一个项目文件,该文件包含在此文章的代码下载中。项目文件告诉MSBuild有关此应用程序的类型,包含哪些文件以及其他一些内容。确保您在同一文件夹中同时具有项目文件和源文件。
为了成功构建应用程序,请从“开始” - “所有程序” - “Microsoft Longhorn SDK” - “打开构建环境窗口” - “Longhorn构建环境”启动您的构建环境。 更改为包含项目文件和源文件的目录,然后键入
msbuild SimpleWinApp.csproj
然后按Enter。您应该在当前目录下的Release文件夹中有一个EXE。单击EXE并享受该应用程序。
对于所有Longhorn爱好者,我建议每天访问Longhorn开发者中心。