有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 9718|回复: 103
收起左侧

简单易懂的现代魔法:C#编程教程(三)

[复制链接]

该用户从未签到

28

主题

103

好友

9783

积分

技术宅认证程序员

苦逼,受剥削人民

积分
9783
发表于 2012-4-9 20:06:01 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 丨端木丶荒冬 于 2012-4-11 22:52 编辑


简单易懂的现代魔法:C#编程教程(三)


                                                                                                            控件与事件



第二篇帖子很无聊吧?

看不懂也没什么关系,好好接受以后的知识就行,但是要记住只要不不懂的地方一定要弄懂,可以去查资料,也可以在下面发帖问我.

然后进入这次的学习.这篇帖子会接受控件的相关概念,如属性事件,然后介绍如何响应各种事件.


以后的帖子都会像这次的一样,介绍一到两个可视化编程的知识点,都不会很长,

但是实际动手操作的地方会比以前多很多,希望大家能亲自动手实验.


控件
首先新建一个工程.大家应该还记得一开始介绍的工具栏吧?里面就有我们需要的各种各样的控件.


                               
登录/注册后可看大图


控件有是什么呢?

广义上来说控件是对数据和方法的封装控件可以有自己的属性方法

这点是不是和非常像呢?差不多可以认为一种控件就是一个,单个的控件就是这个类的对象.

本帖以后所说的控件,具体指的是微软已经给我们写好的那些,也就是工具栏中的那些,我们只要拿来用就好了.

控件使得可视化编程变得非常的方便.

Winform程序的开发,很大一部分是通过设置各种各样的控件完成的.

在C#中,控件除了拥有属性行为(函数)外,还有事件.

什么是事件呢?

和现实生活中的事件一样,对于一个对象(例如一个人),他不只有打人这个行为(函数),也会有正在打人这个事件.

当一个人打人的时候,就会发生在打人这个事件.

我们可以为这个事件添加一个响应它的函数,以便在这个事件发生的时候做一些我们需要的操作.


这次的帖子只会用到一个控件,Button控件,也就是按钮控件.

                               
登录/注册后可看大图


添加按钮控件非常简单,直接从工具箱中选中拖出来就好了.得到下图.


                               
登录/注册后可看大图

然后选中按钮控件,在属性面板中可以看到它具有很多的属性,我们能修改这些属性已达到我们想要的效果.


                               
登录/注册后可看大图


例如我们修改这个按钮的Text属性,按钮上显示的文字就会被改变.


                               
登录/注册后可看大图


当然还有其他很多属性,例如位置啊,大小啊,文字的字体等等.

然后进入控件的事件面板(就是属性面板旁边的小闪电)


                               
登录/注册后可看大图


下面的已经描述的很清楚了,当按钮被点击(Click)的时候(就是按钮发生了点击这个事件)做出某种响应的操作.

我们可以点击一下Click后面的文字框,输入一个自己定的函数名(或者点2下,vs会自动填一个函数名),然后双击它,vs就会自动为我们这个点击事件生成一个响应它的函数.


                               
登录/注册后可看大图

可以看到系统生成的这个参数会自动带了2个参数进来,这个到后面讲.

在这个函数中输入以前经常用的代码.

      MessageBox.Show(有种继续点);

然后点击运行(F5)


                               
登录/注册后可看大图


点击一下按钮


                               
登录/注册后可看大图


现在可以理解事件的概念了吧?

下面我们来点复杂的,响应键盘输入.

把刚刚新建的按钮删掉,选择整个窗口.

这时候我们会发现窗口其实和控件一样,也有属性和事件.

在窗口的事件中,我们在KeyDown事件后加入响应函数.


                               
登录/注册后可看大图



                               
登录/注册后可看大图


在这个函数中添加如下的代码

        MessageBox.Show(e.KeyCode.ToString());

解释一下,可以看到e是KeyEventArgs的一个对象,这个类提供了键盘按下,这个事件的所有信息.

例如你在打人,你打的是谁呢?打了多久呢?都是系统通过这个参数传递给我们的.

其中e.KyeCode指的是这次按下的是哪个键,

ToString()就是把这个键转换成字符串方便我们输出啦.

运行下看看效果.

在运行中随便按下一个键试试.


                               
登录/注册后可看大图



                               
登录/注册后可看大图

如何?很有意思吧?





上面就是这次的全部内容.

这次,我介绍了控件和事件的概念

也通过响应发生的事件弹出了各种各样的对话框.

作业:

1.每次点击按钮都弹出不同的文字.

2.判断按键,只有按下的键是 5,4,2,B的时候才弹出窗口.

3.想想为什么要响应键盘就要删掉按钮呢?

评分

参与人数 6宅魂 +17 宅币 +93 贡献 +20 元气(技能点) +8 活跃 +2 收起 理由
aiyangxiao + 3 Σ( ° △ °|||)︴ 碉堡了
藤原灰哲 + 2 + 5 + 2 支持
hcl + 20 + 7 + 2 Σ( ° △ °|||)︴ 碉堡了
Sonivy.Ray + 5 + 20 第一个作业是点哪个键啊
丨端木丶荒冬 + 20 + 5 + 2 以前贴子要给链接啊= =不然新来的找不到.
Nekor + 10 + 25 + 8 + 4 秋老师,小小经意。

查看全部评分

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

该用户从未签到

163

主题

73

好友

4万

积分

第二章

积分
45516
发表于 2012-4-9 20:10:32 | 显示全部楼层
秋声老师好!
[url=http://www.gn00.com/forum-110-1.html]<font color="DarkOrange">跟着船长起航
回复 支持 反对

使用道具 举报

该用户从未签到

163

主题

73

好友

4万

积分

第二章

积分
45516
发表于 2012-4-9 20:10:48 | 显示全部楼层
同学们好  请坐下
(我只是占楼交作业的)

点评

我突然发现我已经实现了= =就在第一个作业,算了= =不蛋疼了......  发表于 2012-4-9 21:57
好吧,我去试试每次点击都不同结果  发表于 2012-4-9 20:13
于是我发现我第一节课交的作业已经包含了= =多亏了XUXU那个作业我才自己去搞的....  发表于 2012-4-9 20:12
[url=http://www.gn00.com/forum-110-1.html]<font color="DarkOrange">跟着船长起航
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

0

好友

460

积分

New Game

积分
460
发表于 2012-4-9 20:12:34 | 显示全部楼层
三楼也不错嘛,学习了。秋声老师好~
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

91

主题

91

好友

8858

积分

序章

积分
8858
发表于 2012-4-9 20:13:20 | 显示全部楼层
@Nekor 置顶
终于要落幕了。
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

170

好友

2万

积分

第一章

积分
27329
发表于 2012-4-9 20:56:36 | 显示全部楼层
好、好厉害的样子
世人皆惧断肠物,不见最毒在人心。
回复 支持 反对

使用道具 举报

该用户从未签到

36

主题

76

好友

9380

积分

序章

积分
9380
发表于 2012-4-9 21:31:26 | 显示全部楼层
@159-
我关注你几千秒你认识我却只有几秒的时间。我会等你~一直~
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

好友

1520

积分

Continue

积分
1520
发表于 2012-4-9 21:57:57 | 显示全部楼层
不错不错噢
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

11

好友

3239

积分

序章

积分
3239
发表于 2012-4-9 22:55:40 | 显示全部楼层
支持LZ~讲的不错~~~虽然多少还是想吐槽C#的简单易懂~虽然LZ目前的确讲的足够简单易懂了=-=~(P.S:第三题 难道是因为_启动窗口没法获得焦点的原因么?学校学了 快2年C#的表示竟然不知道 ~Orz 果然靠学校老师教的东西都是不靠谱的啊~自学赛高~~~~坐等LZ写到后面当做复习+补充知识~)
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

89

主题

238

好友

6283

积分

序章

积分
6283
发表于 2012-4-9 23:00:50 | 显示全部楼层
先顶一个…最近各种上网不能QAQ
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

271

主题

306

好友

11万

积分

最终章

积分
113882
发表于 2012-4-9 23:08:11 | 显示全部楼层
本帖最后由 irisr 于 2012-4-9 23:22 编辑

if((char)e.KeyCode=='4'||(char)e.KeyCode=='5'||(char)e.KeyCode=='2'||(char)e.KeyCode=='B')
            MessageBox.Show(e.KeyCode.ToString());



只想到了这个方法,不过数字输出的时候前面都会有个大写D,比如D4,这是为啥米呢╮(╯▽╰)╭
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

5

好友

1441

积分

Continue

积分
1441
发表于 2012-4-10 00:12:39 | 显示全部楼层
if(e.KeyCode == Keys.D4 || e.KeyCode == Keys.D5 || e.KeyCode == Keys.D2 || e.KeyCode == Keys.B)
    MessageBox.Show((char)e.KeyCode);
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

163

主题

73

好友

4万

积分

第二章

积分
45516
发表于 2012-4-10 00:42:22 | 显示全部楼层
irisr 发表于 2012-4-9 23:08
if((char)e.KeyCode=='4'||(char)e.KeyCode=='5'||(char)e.KeyCode=='2'||(char)e.KeyCode=='B')
         ...

你忘了switch !快去蹲墙角
switch (e.KeyCode)
            {
                case Keys.D4:
                case Keys.D5:
                case Keys.D2:
                case Keys.B:               MessageBox.Show(e.KeyCode.ToString());break;
                default:                    break;
                  
            }

关于有D的原因大大们说你这强行转换后就变成枚举名了,而不是单纯的变成字符
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

271

主题

306

好友

11万

积分

最终章

积分
113882
发表于 2012-4-10 09:48:02 | 显示全部楼层
挨T虫穴 发表于 2012-4-10 00:42
你忘了switch !快去蹲墙角
switch (e.KeyCode)
            {

一直在墙边╮(╯▽╰)╭
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

28

主题

103

好友

9783

积分

技术宅认证程序员

苦逼,受剥削人民

积分
9783
 楼主| 发表于 2012-4-10 10:35:29 | 显示全部楼层
丨端木丶荒冬 发表于 2012-4-9 23:00
先顶一个…最近各种上网不能QAQ

链接什么的
你给我加上嘛
顺便宣传那些你加也好点
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(基宅) ( 粤ICP备18082987号-1 | 浙公网安备 33010902001746号 )

GMT+8, 2024-4-25 22:54 , Processed in 0.235494 second(s), 36 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表