`
webcenterol
  • 浏览: 918273 次
文章分类
社区版块
存档分类
最新评论

WinForm基本知识

 
阅读更多

好,我今天就来讲解WinForm。WinForm可能计划8节课。第1节课,我想简单介绍一下WinForm的一些基本东西,介绍Form这个类。第2节课,我可能介绍一些简单的控件。第3节课,我将介绍2~3个复杂的控件。第4节课程中将涉及到ADO.NET,看情况,若果允许的话,我将讲解两节课的ADO.NET。接下来介绍一下窗体的画图这些类。完了再学习模式窗体和非模式窗体。最后要介绍一下WinForm中比较复杂的东西,比如打包发布啊调试等等一些课程,我放在最后进行讲解。最后,在课程结束之前带领大家做一个比较小的Demo,来完整的看一下这个WinForm。
今天第一节课程就是来建立一个WinForm程序,主要是好多朋友刚接触DotNet或者对VS2008比较生熟。创建一个WinForm程序怎么做呢?应该从文件——>新建——>项目,会弹出一个新建项目对话框。(我这里只安装一个C#语言,装了VB了有VB,装了Visual C++有VisualC++)选择Windows窗体应用程序。细心的朋友的会发现,在我的右下角会有个.NET Framework 2.0和.NET Framework 3.0还有.NET Framework 3.5这三个版本。我们教学呢,用2.0的教学。因为有很多朋友用VS 2005,所以我用2.0来建立一个 项目。WinForm里面不涉及到Linq表达式那些涉及到3.0或3.5的知识。只是2.0就够我们用了。
给项目的名称起名为WinFormDemo。随着这个项目创建一个解决方案,它跟我建立的项目名称一样。也就是说我在以前说过,一个解决方案中可能有多个项目,有可能只有一个。当然在我这个例子中只有一个哈。我打开右边的解决方案管理器上,你会发现它自动生成一些文件。对这些文件,我简单做一些介绍哈。我看解决方案管理器上,这是我自动生成的解决方安。这个项目下也包括一系列的文件。我简单跟大家说一下哈。
大家第一看到的文件时那个program,大家看到扩展名为.cs,可以理解这是我们放C#代码的文件。我们打开它来看一下哈。这个program会自动引用一些命名空间,并且有一个静态类program在这个静态类中有static void main() 方法,main()是一个函数的入口点当然在这个WinForm中间也是。这个项目运行是送main方法开始的。main()在加载的时候就是一个进程,一个exe或dll就是一个进程。进程只是在内存中分配一块区域,在这个区域中,我去实例化这个Form1,把Form1给显示出来就可以了。program简单的是说是程序的入口点。
大家接下来看一下这个Form1这个窗体。这里是我创建项目是默认生成的窗体。我可以把它删除,自定义一个窗体比如说,重命名一下命名为MainForm。当我展开这个MainForm的时候,它底下还有两个东西一个.resx是它一个资源文件,假如你程序上需要一些音乐图片之类的,它就用来保存路劲或一些资源文件。MianForm.cs是MainForm存放的后台代码。这样说是不严谨的,细心的朋友会发现,它添加一个关键字Partial,这是什么东西呢?这里就是这是类的一部分,还有一部分在哪里呢?在MainFormDesigner.cs 的里面,这里也有这个关键字,可以将这个类写到两个文件中。
下面我们来看一下这个MianForm这个类,我在C#中讲过继承,用冒号来实现的。大家可以看到MainForm类是继承于Form类。这个Form是Microsoft为我们定义好的,就像一个模板一样。如果我们要定义一个窗体我们可以从这个模板中继承。然后我再对这个模板进行个性化定制。我选中这个Form类,点右键转移到定义。我们可以看到Form是从源数据,边上上了一个小锁,这是什么意思?这是说我们看到的代码是通过反射机制从dll中间反射出来的它是不可改的。大家只能看它而不能修改其中代码。大家看Microsoft给我们定义这个类啊,它的构造函数,它底下还有好多方法属性和事件等等。我看到的protected、public 等等,大家学过OOP之后就可以知道这些都可以继承到子类中间的,也就是说子类中可以被访问到的。至于这个Form中有些什么呢?我不想一个个说。我想通过后面的可视化的来看这些成员。为什么我要说成员?有人知道吗?大家如果知道,我会在讲C#中类的成员对吧。这里我又说窗体的成员。窗体也就是类嘛。也也就是它这个类与以前的类有点不同,它是可视化的量化到一个窗体上可视化的。但是它本质上还是一个类。也就是说它本身也有很多它自己的成员的。我就拿这个MainForm的构造函数,它就是类的一个成员。
现在我来讲解引用这个文件夹,大家会发现system.data等等一些乱七八糟的一些东西。这是什么东西呢?用心的同学会发现,这个与using差不多啊?对的,这里只是用dll文件形式呈现的。如果没有,大家可以右键添加引用。一个dll中可以包含一个或多个命名空间。
property(属性),它包括你项目一些版本、资源编译时候的信息都会包括在这个文件夹中间。虽然这个文件夹用的东西比较少,但是一些公司、版权信息都会包含在里面。有些时候,我们会调用这些。项目的辅助信息。
接下来,我们重点说MainForm和MainFormDesigner之间的关系。大家打开这个窗体会发现这是一个普通的窗体。窗体就是一个可视化的平面的一个东西。窗体最醒目的特征是最小化、最大化、关闭。当然还有窗体的名称和窗体的图片等等一些东西。这些都从运行起来的这个角度去看它。大家从开发角度或者说从一个程序员的角度去看它的时候呢?大家更多把它看做一个容器。为什么这么说呢?大家经常去用一些程序的时候,比如QQ。它其实也是个窗体程序,它有标题它有最小化最大化关闭、这些图标这些链接等等。它就是一个主窗体包含着的这些东西。说到底,它就是容器,比如我可以在这个窗体上放置一个按钮、一个文本框。类是如何放这个容器呢?
我来分析一下它。构造函数,它的特点,名称与类名相同它没有返回值,参数是可有可无的。这里它使用了一个无参的构造函数。这里构造函数大家发现其调用了一个方法。这个方法打哪里呢,点右键转到定义。发现在非不类的另一个部分。在MianFormDesigner这个文件里面。当这个窗体在program中被new的时候,调用了MainForm构造函数,这个函数有调用另外一个方法,这个方法在MainFormDesigner中。.NET程序看起来比较呆,拖拖控件就oK,不像Java那样。但是道理都是一样的。只要大家了解这个本质和机制就行了。如果窗体上要生成100个控件,大家用代码写,那效率是非常的低下的。如果大家用Microsoft给大家提供这种便捷的方式,布局起来就相对比较快。这样就提高了企业的生产效率。对于企业来说是非常愿意做这件事情的。如果是为了调高程序员水平,那么OK你可去写个buuton2。
如果从类的角度来看,我来分析一下它。大家会发现窗体是一个类。按钮相当于窗体的一个字段。并且这字段是pravite是私有的。
大家会遇到一个问题,通过一个窗体来调用另外一个窗体。怎么调用呢?大家可以考虑考虑,我可以通过Button1调用subForm1.
如果学OO学的比较好的朋友一下 就想明白。你subForm1不就是个类吗?既然这个类我想用你怎么用啊,只要把你new成对象就可以用你啦。我来双击这个buuton1.一个类调用另外一个类可以通过new这种方式显示出来。要调用这个类必须实例化,然后show出来。
接下来我还想说,既然窗体是类,类就有很多成员:属性、事件、字段、索引器等等。那么这个可视化类有一些什么样的成员呢?到了WinForm以后,可视化类有三个比较重要的成员:方法、属性、事件。我在C#最后一讲中讲到事件和委托。事件的到来就给了鼠标和键盘良好发挥的空间。我可以单击它,双击它可以鼠标移动,把焦点落在窗体上,我可以按键盘按s键,按c键什么等等我都能识别出来。
下面,大家就来看一下可视化类的三种成员,属性。属性它有属性面板。里面有个颜色。就好比肤色。啊张三过来,张三长的比较黑。李四长的比较白。所以窗体一样。把的窗体颜色可以改变。但是人的皮肤不可变哟,呵呵。
非常多啊,大家可以挨个去改改,然后下面会有文字提示。
事件,是个东西,这里用闪电。
方法是调用的。要在代码中去写。
事件是一个动作,它不可能去实现一个功能。方法是真正的功能。触发某个事件来指定某个功能去执行。中间是通过委托来实现的。

分享到:
评论

相关推荐

    WinForm.第一章.WinForm的基本知识

    WinForm.第一章.WinForm的基本知识

    C# winform 简单员工管理系统

    实现按照科室录入个人的基本资料、工资和扣除金额的数据。 计算个人的实际发放工资。 按科室、职业分类统计人数和工资金额。 能够删除辞职人员的数据。 按月分类查询。 职工功能: 查询自己每月的工资

    C# winform linq 人力资源管理系统 工资管理 合同管理

    随着全球对知识和人才的重视,企业对人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人力资源管理系统是一个企业单位不可缺少的部分,是适应现代企业制度...

    Winform画图工具

    winfrom实现画图工具的一些基本知识。

    C# Winform数据库应用设计(附开发案例

    c#编程集合资料,不错的应用设计,另附一些开发案例的下载地址,欢迎大家下载学习。 学习完本课程之后,我们需要达到以下目标: ...由于本学期的知识点主要集中在C#的基本语法、 Win forms开发和 ADO. NET,这些知识

    WinForm跨窗口调用实例代码

    我平时想调用另外一个的CS文件中的方法,一般都是new一下。可是却存在很大的隐患,对初学者,往往还很难发现,主要是一些基本知识理解不透导致,在此,希望把经验与诸位初学者分享下,大神请飘过。

    使用c#写的winform酒店管理系统,功能基本完善.zip

    网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工...

    winfrom入门知识

    常用的winfrom基础,linq基础,Xml处理,DataTable数据处理,文件,PDF,图片数据流处理,sql知识,VB基础,EF基础

    基于C#(WinForm)设计火柴棍移动【100011663】

    本项目的全部程序使用 C#语言编写,我从头学习了 C#的使用和 Windows 窗体的设计,现如今已基本掌握了这一门语言。在一开始我选择了七巧板题目,自学了 C#+openCV 的相关操作,但最终由于数图知识的欠缺,还是没能...

    基于C#实现(WinForm)五子棋游戏【100012353】

    综合运用 c#.net 知识,在 vs 2015 平台上,进行控制台应用程序和简单 Windows Form 应用程序的开发;初步熟悉开发一个 Windows 软件的流程。增加显示光标、判断禁手、判断胜负、悔棋认输等功能,经过不断地调试修改...

    很完整的C#课程设计报告

    1)掌握.NET基本结构以及C#语言的基本知识和技能; 2)基本掌握面向对象程序开发的基本思路和方法; 3)掌握GDI+开发基本知识; 4)利用所学的基本知识和技能,进行简单数据库应用程序设计 课程设计是我们的主要...

    小组形式完成的C#+Winform+Sql Server 做的人事管理系统,功能基本完成.zip

    网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工...

    一个物联网(IoT)开发的入门教程 涉及单片机、上位机、移动应用、服务器后台开发的知识 以及蓝牙4.0、以太网模块的使用实例

    第一部分:基础入门 第1部分:单片机开发——Arduino - 1.1 Arduino开发环境搭建 - 1.2 点亮一个Led - 1.3 PWM操作 - 1.4 UART的使用 第2部分:上位机开发——.Net - 2.1 winform快速入门 - 2.2 serialport控件使用 ...

    c#写的图片浏览器

    c#开发的一款图像浏览器,次例程对学习c#WinForm编程相当有用,其中有很多winform的基本知识。

    非常实用c#操作Access数据库的例子(application)

    本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString...

    C#经典源代码-04-报表打印.rar

    经典C#源码,含十一个专题,基本涵盖C#所有知识点(窗体技巧 控件操作 图像操作 报表打印 系统操作 文件处理 网络操作 数据库操作 加密解密 硬件读写 游戏设计),值得初学者好好学习。

    传智播客.net基础班种子

    传智播客2010年的.Net课堂视频...第3季WinForm基础 第4季SQL从入门到提高 第5季ADO.Net 第6季HTML 第7季JavaScript 第8季Dom 第9季JQuery 第10季asp.net基础 第11季asp.net中级 第12季asp.net高级 第13季ajax

    NET基础学习视频教程.txt

    .NET基础知识入门,包括C#基础知识、WinForm应用程序、HTML CSS,ASP.Net和SQL数据库学习视频,文档内容为永久有效网盘资源链接,不错的.NET入门学习视频教程。

    苏坤C#基础视频笔记

    苏坤C#基础视频笔记,自己总结的苏坤《c#入门基础》视频教程课堂的笔记,每个知识点都附带实例。希望对学习c#基础的童鞋们有帮助。

Global site tag (gtag.js) - Google Analytics