登录社区:用户名: 密码: 忘记密码 网页功能:加入收藏 设为首页 网站搜索  

文档

下载

图书

论坛

安全

源码

硬件

游戏
首页 信息 空间 VB VC Delphi Java Flash 补丁 控件 安全 黑客 电子书 笔记本 手机 MP3 杀毒 QQ群 产品库 分类信息 编程网站
  立华软件园 - 安全技术中心 - 技术文档 - C#.Net 技术文章 | 相关下载 | 电子图书 | 攻防录像 | 安全网站 | 在线论坛 | QQ群组 | 搜索   
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
 其他安全技术资源
  · 攻防演示动画
  · 电子图书
  · QQ群组讨论区
  · 其他网站资源
最新招聘信息

C#编程入门三部曲
发表日期:2005-03-13作者:[转贴] 出处:  

第一步 创建一个表单

这非常简单,只需要创建一个从 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() ); //请求在新表单中运行TempConverter()类//
            }
         }
以上只有 Main() 方法所在行是新的代码。
    Application.Run(new TempConverter());
上面这一行的意思是用新表单来启动应用程序。
假设源文件叫做TempConverter.cs,那么执行以下的命令编译代码:
     csc /r:System.dll  /r:Microsoft.Win32.Interop.dll 
/r:System.WinForms.dll 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();
               tTempFah.Clear();
               return;
            }
            dTempFah = 1.8*dTempCel+32;
            tTempFah.Text = dTempFah.ToString();
            tTempFah.Focus();
            tTempFah.SelectionStart = 0;
            tTempFah.SelectionLength = 0;
            tTempCel.Focus();
            tTempCel.SelectionStart = 0;
            tTempCel.SelectionLength = 0;
         }
第四行到第八行(也就是try 区中的一切)取回Celsius(摄氏)文本框中的数值。如果它是一个双字节数,就将其存储在dTempCel中,否则就清除两个文本框并退出。接着,用存储在dTempCel
中的值,我们用第9 行中的公式将相同的温度存储在Fahrenheit中。将这个新的数值在 Fahrenheit(华氏)文本框中显示,然后将光标放在每个文本框中,以便将指针设置到开头。(如果不将指针设置到开头,我们就会看到一个长长的数字的结尾,要看开头就必须滚动鼠标)。
以下是Fahrenheit按钮的代码,它将完成同样的任务,只不过是相反的处理:
         private void bnFtoC_Click(Object sender, EventArgs e) {
            double dTempCel = 0;
            double dTempFah = 0;
            try { dTempFah = tTempFah.Text.ToDouble(); }
            catch(Exception) {
               tTempCel.Clear();
               tTempFah.Clear();
               return;
            }
            dTempCel = (dTempFah-32)/1.8;
            tTempCel.Text = dTempCel.ToString();
            tTempCel.Focus();
            tTempCel.SelectionStart = 0;
            tTempCel.SelectionLength = 0;
            tTempFah.Focus();
            tTempFah.SelectionStart = 0;
            tTempFah.SelectionLength = 0;
         }
接着,我们需要将适当的点击事件捕捉方法与按钮的 Click事件联系起来。要完成这一步,我们将以下两行放在类的构造器中:
         bnCtoF.Click += new EventHandler(this.bnCtoF_Click);
         bnFtoC.Click += new EventHandler(this.bnFtoC_Click);
 
最后,请看完整的代码:
         using System;
         using System.WinForms;
        
         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);
               bnCtoF.Click += new EventHandler(this.bnCtoF_Click);
               bnFtoC.TabIndex = 3;
               bnFtoC.Text = "F to C";
               bnFtoC.SetSize(70,25);
               bnFtoC.SetLocation(90,35);
               bnFtoC.Click += new EventHandler(this.bnFtoC_Click);
               this.Controls.Add(tTempCel);
               this.Controls.Add(lTempCel);
               this.Controls.Add(tTempFah);
               this.Controls.Add(lTempFah);
               this.Controls.Add(bnCtoF);
               this.Controls.Add(bnFtoC);
       //= new Control [] { tTempCel, lTempCel, tTempFah, lTempFah,
 bnCtoF, bnFtoC };
            }
        
            public static void Main() {
               Application.Run( new TempConverter() );
            }
 
            private void bnCtoF_Click(Object sender, EventArgs e) {
               double dTempCel = 0;
               double dTempFah = 0;
               try { dTempCel = tTempCel.Text.ToDouble(); }
               catch(Exception) {
                  tTempCel.Clear();
                  tTempFah.Clear();
                  return;
               }
               dTempFah = 1.8*dTempCel+32;
               tTempFah.Text = dTempFah.ToString();
               tTempFah.Focus();
               tTempFah.SelectionStart = 0;
               tTempFah.SelectionLength = 0;
               tTempCel.Focus();
               tTempCel.SelectionStart = 0;
               tTempCel.SelectionLength = 0;
            }
        
            private void bnFtoC_Click(Object sender, EventArgs e) {
               double dTempCel = 0;
               double dTempFah = 0;
               try { dTempFah = tTempFah.Text.ToDouble(); }
               catch(Exception) {
                  tTempCel.Clear();
                  tTempFah.Clear();
                  return;
               }
               dTempCel = (dTempFah-32)/1.8;
               tTempCel.Text = dTempCel.ToString();
               tTempCel.Focus();
               tTempCel.SelectionStart = 0;
               tTempCel.SelectionLength = 0;
               tTempFah.Focus();
               tTempFah.SelectionStart = 0;
               tTempFah.SelectionLength = 0;
            }
         }
 

结 语

到此为止,你看到了如何用C#进行编程的一个完整过程。这个例子虽然很简单,但是麻雀虽小,五脏俱全,理解其中的原理后,就可以大显身手,充分发挥C#的强大功能了。
我来说两句】 【发送给朋友】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 C#编程入门三部曲

 ■ [欢迎对本文发表评论]
用  户:  匿名发出:
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。

最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接  
Copyright ©2001-2006 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00195