65.9K
CodeProject 正在变化。 阅读更多。
Home

你好 Longhorn

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.32/5 (32投票s)

2004年3月2日

3分钟阅读

viewsIcon

130585

downloadIcon

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属性。

我还为myButtonClick事件指定了一个事件处理程序。此处理程序所做的就是更改我的文本框中的文本

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开发者中心

© . All rights reserved.