当前位置:编程学习 > C#/ASP.NET >>

C#编程入门三部曲

答案:C#是微软.NET架构的主力开发语言,它功能广泛而强大,Web开发人员应该毫不犹豫地
拥抱它。本文就通过一个摄氏温度与华氏温度间相互转换的例子对C#
的GUI编程进行介绍,旨在带领你快速步入C#之强大与神奇的编程世界。
准备条件
要理解本文所举例程,首先要对C#和面向对象的编程有一个基本的了解。关于 C#的基本
知识,请参阅 C#入门
这篇文章。要编译并运行举例的应用程序,就需 下载
.NET Framework SDK,它当前的一个版本是Beta 1。
作为程序开发者,我们都知道创建一个典型的基于 windows 的应用程序应该包含以下这
些基本步骤:创建一个适当的表单;向表单中增加控件;最后增加响应用户事件的代码

C#和 .NET 框架出现后,完成这些步骤所需要的工具都可以在System.WinForms 名子空
间中找到。
 
第一步 创建一个表单
这非常简单,只需要创建一个从 System.WinForms.Form 类中衍生出来的类,并对适当
的属性进行初始化就可以。在我们的例子中,类定义是这样开始的:
public class TempConverter : System.WinForms.Form {
  .
  .
  .
}
以下是我们希望的主窗口(表单)视图:
我们希望表单具备如下特征:
- 窗口大小为 180乘 90象素
- 不给用户改变窗口大小的能力
- 标题栏中显示的标题是 +C -> +F / +F -> +C
- 初始状态下表单显示在屏幕的中心
- 不想要帮助按钮(应用程序太简单,不需要帮助按钮)
- 不给用户提供将应用程序最大化的能力
(因为在给定的窗口尺寸内,一切都是可视的,因此不需要最大化)
将表单初始化成给定的规格涉及到对 TempConverter 对象的某些属性进行设置。有些属
性有改变值的方法,而其它属性则要通过更新适当的实例变量来直接修改。下面是有关
代码。如果想要得到关于WinForms
类的属性和方法的更多信息,那么 .NET Framework SDK 所提供的文档可以算是一个很
好的参考资料。
this.SetSize(180,90);
this.BorderStyle = FormBorderStyle.FixedDialog;
this.Text = " +C -> +F /  +F -> +C ";
this.StartPosition = FormStartPosition.CenterScreen;
this.HelpButton = false;
this.MaximizeBox = false;
现在把这些代码放在一起进行编译和运行,看看表单运行后是什么样子。这里要使用类
定义,创建一个构造器(其中要包含以上的代码来初始化主窗口的外观),并且要创建
一个主方法来创建类的一个例示。以下是完成这一工作的代码:
public class TempConverter : System.WinForms.Form {
       public TempConverter() {
        this.SetSize(180,90);
             this.BorderStyle = FormBorderStyle.FixedDialog;
             this.Text =" +C -> +F /  +F -> +C ";
             this.StartPosition = FormStartPosition.CenterScreen;
             this.HelpButton = false;
             this.MaximizeBox = false;
       }
       public static void Main() {
             Application.Run( new TempConverter() );
       }
}
以上只有 Main() 方法所在行是新的代码。
    Application.Run(new TempConverter());
上面这一行的意思是用新表单来启动应用程序。
假设源文件叫做TempConverter.cs,那么执行以下的命令编译代码:
     csc /r:System.dll  /r:Microsoft.Win32.Interop.dll /r:System.WinForms.dl
l TempConverter.cs
这里不再详细讲解编译命令,因为当Visual Studio .NET可用时,就不必要发出命令行
的编译命令了。

第二步 向表单中增加控件
接着的一步是向表单中增加控件。我们为每个控件创建一个实例变量,对这些新实例变
量进行初始化,最后把每个控件都放在表单中。这里是增加了控件之后表单的样子,以
及更新过的代码:
public class TempConverter : System.WinForms.Form {
    Label   lTempFah = new Label();
    Label   lTempCel = new Label();
    TextBox tTempFah = new TextBox();
    TextBox tTempCel = new TextBox();
    Button  bnCtoF = new Button();
    Button  bnFtoC = new Button();
    public TempConverter() {
       this.SetSize(180,90);
       this.BorderStyle = FormBorderStyle.FixedDialog;
       this.Text =" +C -> +F /  +F -> +C ";
       this.StartPosition = FormStartPosition.CenterScreen;
       this.HelpButton = false;
       this.MaximizeBox = false;
       tTempCel.TabIndex = 0;
       tTempCel.SetSize(50,25);
       tTempCel.SetLocation(13,5);
       lTempCel.TabStop = false;
       lTempCel.Text = "+C ";
       lTempCel.SetSize(25, 25);
       lTempCel.SetLocation(65,5);
       tTempFah.TabIndex = 1;
       tTempFah.SetSize(50,25);
       tTempFah.SetLocation(90,5);
       lTempFah.TabStop = false;
       lTempFah.Text = "+F ";
       lTempFah.SetSize(25,25);
       lTempFah.SetLocation(142,5);
       bnCtoF.TabIndex = 2;
       bnCtoF.Text = "+C to +F ";
       bnCtoF.SetSize(70,25);
       bnCtoF.SetLocation(13,35);
       bnFtoC.TabIndex = 3;
       bnFtoC.Text = "+F to  +C ";
       bnFtoC.SetSize(70,25);
       bnFtoC.SetLocation(90,35);
       this.Controls.Add(tTempCel);
       this.Controls.Add(lTempCel);
       this.Controls.Add(tTempFah);
       this.Controls.Add(lTempFah);
       this.Controls.Add(bnCtoF);
       this.Controls.Add(bnFtoC);
}
以上代码首先创建两个标签、两个文本框和两个按钮,然后对每个控件进行初始化并将
其加入表单中。具体的含义如下:
- SetSize() 初始化控件的尺寸
- SetLocation() 初始化表单中控件的位置
- 设置控件的TabStop 属性为false表示这个控件从不被聚焦
- 设置TabIndex 为 X 表示当敲击TAB键x次后聚焦此控件
- 控件的text 属性表示显示在其上的文字信息
- this.Controls.Add() 表示在表单上放置一个控件,要快速地添加每个控件,可以这
么书写:this.Controls = new
Control[] { tTempCel, lTempCel, tTempFar?.}

第三步 增加响应用户事件代码
还有最后一步就可以大功告成了,就是增加一个方法来捕捉按钮点击事件。这里就是指
从摄氏到华氏的按钮点击代码:
private void bnCtoF_Click(Object sender, EventArgs e) {
    double dTempCel = 0;
    double dTempFah = 0;
    try { dTempCel = tTempCel.Text.ToDouble(); }
    catch(Exception) {
       tTempCel.Clear();
     

上一个:Creating Custom Web Controls in C# Stats(转)
下一个:DotNet中密码的加密(转)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,