学院首页>网络编程>C#.NET>用C#开发第一个WINDOWS应用程序

用C#开发第一个WINDOWS应用程序

作者:王骏 来源:www.vckbase.com 添加时间:2006-5-21 11:16:46
 前言:C#是一门现代的编程语言,包含在Visual Studio .Net 7.0中。它简化了C++的复杂性,保持了灵活性,对于学过C++的人来说很容易上手。写本文的时候Visual Studio .net 7.0 Beta1已经发布,本文即针对此版本做一些简单的开发尝试。

示例代码下载 18K


一、创建工程

如图所示,在集成开发环境的File菜单中选择New->Project打开新建工程对话框


我们选择工程类型为Visual C# Projects,在模板中选择Windows Application,
在Name处输入工程名称:HelloWindows,在Location中输入保存的路径。


确定后,系统自动为你生成了程序框架。
现在我们来简单地熟悉一下这个开发环境中。

这就是我们的开发环境!
A区是我们的工具箱,包括对数据库、组件、窗体控件等的支持,我们都可以选择并加入到form中,假如你找不到Toolbox,请在菜单View中选择Toolbox以打开它。
B区是我们的设计工作区(包括对界面、代码的设计),图中显示的是我们刚才新建的应用程序的主窗口:Form1。
C区相当于我们在VC6中的workspace:Solution Explorer可以看成是以前的FileView,ResourceView和ClassView大家一定是很熟悉了,看到Solution Explorer中的 Form1.cs了吗?这就是Form1对应的C#文件,双击它就可以对Form1进行界面设计,鼠标右键单击Form1.cs在弹出菜单中选择View Code便可以查看对应的代码。
D区是属性窗口:类似我们在VC6中资源编辑器里的属性窗口,但功能更强大,对于屏幕上的组件比如按钮、列表框你都可以在这里直接修改其属性:如文字、背景色等。

我们接下去的任务是制作关于对话框,并添加菜单用于打开此对话框。

二、添加新的Form:关于对话框
选择菜单Project->Add Windows Form,在弹出的对话框中选择类别为Local Project Items,选择模板为Windows Form,在Name中输入文件名:AboutDlg.cs,确认。新的Form出现在工作区,我们在D区的属性对话框中修改Text为“关于”,选择BackColor为淡蓝色,你也可以尝试其它属性的改变。
接下去,我们打开Toolbox,选择Win Forms中的Label,然后在窗体中画出,并在属性对话框中修改Text为"VC知识库欢迎您!http://www.vckbase.com",我们在Win Forms中再加入一个Button,修改Text为“确认”。

至此,对话框的界面我们设计好了,但当用户按下确认按钮的时候,我们如何关闭对话框呢?
我们双击“确认”按钮,这样系统会为按钮自动添加按钮的处理代码,在其中我们添加Close()函数用以关闭,如下所示:

protected void button1_Click (object sender, System.EventArgs e)
{
Close(); ///这是我们增加的一句
}


关于对话框已经完成了,我们接下去要做的是为主视窗添加菜单,当选择菜单中的关于,我们就弹出“关于对话框”,让我们继续吧...


三、为主视窗添加菜单

在SolutionView中双击Form1.cs打开Form1,在Toolbox->Win Forms中选择MainMenu,并在Form1中画出,在“TypeHere”字样处我们可以输入菜单条,如图所示:

双击关于字样,系统会为我们添加该菜单条的处理代码,我们可以在其中添加打开"关于对话框"的代码:


protected void button1_Click (object sender, System.EventArgs e)
{
AboutDlg dlg = new AboutDlg();///分配AboutDlg对象
dlg.ShowDialog();///显示对话框
}


好了,我们的程序写好了,让我们按F5看看效果吧!

后记:C#的功能远远不止与此,本文的目的是让用过VC6的朋友对C#中WINDOWS应用程序的开发尽快上手,只当抛砖引玉。

WINDOWS应用程序是靠消息驱动的,在VC中我们通过CLASSWIZARD可以为某窗口类添加消息处理函数,CLASSWIZARD将为你添加消息映射,对于WINDOWS消息,生成的消息处理函数重载了基类的虚拟方法。而在C#中如何处理消息呢?本文针对VS.NET BETA1环境下的C#简单地介绍WINDOWS消息以及自定义消息的处理方法。

示例代码下载 17K

一、生成一个名为MSGApplication的工程
工程的建立方法请参考:C#学习笔记之一

二、处理WM_PAINT消息
我们以WM_PAINT消息的处理为例,在C#中处理消息与MFC的消息处理是类似的,但更为简单。MFC中需要使用DECLARE_MESSAGE_MAP来定义消息映射,在C#就不需要了。比如WM_PAINT消息,我们只要重载父类中的OnPaint虚拟方法即可(虽然在BETA1中重载父类虚拟方法的操作过程有点繁琐),方法如下:
在菜单View->Other Windows->Object Browser打开对象浏览窗口(或用CTRL+ALT+J打开),在我们的工程名下找到Form并选中,这时在右边的窗口列出所有Form类的成员函数,如图所示:
我们选中OnPaint(System.WinForms.PaintEventArgs)此时在下面会显示完整的OnPaint函数protected void OnPaint ( System.WinForms.PaintEventArgs e )我们将这一行字符串Copy下来。打开Form1.cs进行代码编辑,我们把刚才拷贝下来的函数定义复制到Form1类里面,并加上override关键字,此时我们便可以在里面添加我们的消息处理代码了,请参考如下代码段:


protected override void OnPaint ( System.WinForms.PaintEventArgs e ) 
{
Font font = new Font("黑体",28);///定义字体:黑体,大小:28
SolidBrush bluepen = new SolidBrush(Color.Blue);///创建蓝色画笔
SolidBrush blackpen = new SolidBrush(Color.FromARGB(0xa0,0xa0,0xb0));///创建黑色画笔
e.Graphics.DrawString("VC知识库",font,blackpen,65,25);///写字符串
e.Graphics.DrawString("VC知识库",font,bluepen,61,21);///偏移4个象素用不同的颜色再写一次,达到立体效果
}

对于其它消息的处理以及对其它父类虚拟函数的重载都可以采用同样的方法。 

三、自定义消息的处理
为了处理的方便,在这里我们将需要使用到的自定义消息封装成一个类,类的添加过程如下:
在ClassView中选中我们的工程MSGApplication,按下鼠标右键,在弹出菜单中选择Add->Add Class,弹出Class Wizard,我们将类命名为WM,其余选项不便,确认完成类的添加。我们为WM类添加两个成员变量,见如下代码:


public class WM
{
public const int USER = 0x0400;
public const int TEST1 = USER+1;
}

我们在Form1中添加一个按钮,并为该按钮添加事件处理代码(假如您对这个过程不熟悉,请参考:C#学习笔记之一)
向主视窗发送TEST1自定义消息,具体代码如下:
protected void button1_Click (object sender, System.EventArgs e)
{
SendMessage(WM.TEST1,100,200);
}

消息已经发出了,在Form1中我们如何对该消息作出响应呢?我们可以重载 DefWndProc方法。 

protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM.TEST1:
///string与MFC中的CString的Format函数的使用方法有所不同
string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}

程序运行结果如图

当我们点发送消息按钮,弹出消息框并显示收到的参数。

后记:可以预料在VS.NET BETA1的后继版本中对上述过程的操作会有很大改变,但原理是一致的。让我们期待更完美的C#展现在我们面前。
站内搜索