转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
Henry手记:VB.NET Windows 窗体引介(二)         ★★★★

Henry手记:VB.NET Windows 窗体引介(二)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2000 更新时间:2009/4/23 19:01:46
        Me.TextBox1.Size = New System.Drawing.Size(64, 21)

        Me.TextBox1.TabIndex = 1

        Me.TextBox1.Text = "TextBox1"

        ''''Form1

        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)

        Me.ClientSize = New System.Drawing.Size(392, 266)

        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.TextBox1, Me.Button1})

        Me.Name = "Form1"

        Me.Text = "Henry 的窗体"

        Me.ResumeLayout(False)

    End Sub

这里Henry要解释几个一般不太注意的问题:

(1)         布局事件:在窗体中添加或移除控件,或在控件中添加或移除子控件,窗体/ 控件的边界改变,以及在发生其他可能影响窗体/ 控件的布局时,将会发生 Layout 事件。因此在设置初始化代码时,应该先禁止(挂起)此事件发生,在布局完毕后再恢复。要不然每添加、设置一个控件就会调用一次Layout事件,对窗体进行重新布局,影响工作效率。所以在上例中用Me.SuspendLayout()来挂起Layout事件,在设置完毕后,用Me.ResumeLayout(False)来恢复该事件。

(2)         VB.NET的习惯是使用集合、数组来处理以前的个体行为,我们可以从上例中看出。设置控件的位置时,没有用left、right、top等属性来定位,而是使用Location属性来设置该控件左上角的坐标。设置控件大小时,没有用Height、width等属性,而是使用Size。这也表现了VB.NET设计与使用上的一个变革思想,多使用集合,可以提高代码的简洁度,且便于阅读与管理。

(3)         Button1与Textbox1的Private声明在后文会详加解释。

    事件处理

先前版本的VB是事件驱动的,您可以很方便地编写响应事件的程序代码。比如,您想让按钮Button1响应用户的单击(Click)事件,所有要做的事就是创建一个名为Button1_Click的事件程序(实际上,VB 集成编译环境帮您完成了此工作)。在VB.NET中的事件处理方法,和以前是一样的。当您在设计窗口布署了控件后,可以点击它以告知Visual Studio.NET您想写一段事件处理程序。接下来您将看到如何人工编写该代码,也因此使您明白VB.NET的事件是如何工作的。

对于Windows事件驱动程序而言,不可避免要涉及三个要素:对象、事件、事件处理程序。

那么对于我们这个例子,对应上述要素的各是什么呢?

对象:Button1     事件:Click      事件处理程序:Button1_Click

联系起来用语言描述就是:点击Button1(对象),会激发Click(事件),调用Button1_Click(事件处理程序)。

如果您想让某个对象能够响应事件,就要在声明它时使用WithEvent关键字(WithEvents 关键字指示被声明的对象变量引用可以引发事件的类实例)。例如,当您想让按钮(button)能够响应事件,就要将声明:

Private Button1 As Button

替换为:

Private WithEvents Button1 As Button‘这个声明在后文还会有变化,请读者注意

在变量名前添加WithEvent

然后,您需要为每个事件创建一段事件处理程序以使对象能够在响应事件时调用。Button1要响应Click事件,您需要有一个Button1_Click过程,并用Handles标识“控件.事件”。

Private Sub Button1_Click(ByVal sender As Object, _

  ByVal e As System.EventArgs) Handles Button1.Click

  ''''在此写自己的代码

End Sub

Form类和所有的控件类都从Control类继承下了事件。如果您查看一下.NET Framework参考中的System.Windows.Forms.Control类,您将会看到此类有58个事件,包括从Component继承下的Disposed事件(关于Disposed的继承关系,请看Henry的另一篇文档)。还命名了许多新的诸如Click, DoubleClick, GotFocus, LostFocus, KeyUp, KeyDown等事件。

很多新手都会有这样的问题:事件处理程序中的参数Sendere是什么意思?

(1) sender as object,就一语道破它的来源与用途。object是支持 .NET 框架类层次结构中的所有类,并为派生类提供低级别服务。这是 .NET 框架中所有类的最终超类;它是类型层次结构的根。
    一般来说,sender在形参中表示引发事件的源头,即上文所说的三要素中的“对象”。如果在控件引发的事件中写代码的话(就象上例这样),一般都不需要再重新指派,因为它已经默认为是该控件了。当自己写代码来调用某事件程序时,就要注明sender是何物了。
    (2) e,表示的是事件数据,就是一个事件激发所需要的状态(参数)信息。在事件引发时不向事件处理程序传递状态信息的事件会将e设为Eventargs。如果事件处理程序需要状态信息,则应用程序必须从此类派生一个类来保存数据。比如Mousedown事件,系统需要判断mouse的位置、判断是左中右等哪个键点击了、判断点击了几下等等,因此该e就成为了System.Windows.Forms.MouseEventArgs类的实例。

当几个控件的事件处理程序是相同时,可以把“对象名.事件名”加至Handles之后,即可在事件引发时,调用同一个事件处理程序。如果处理程序有所不同,可以通过Sender来进行标识,代码如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

 Handles Button1.Click, Button2.Click

        Select Case sender.name

            Case "Button1"

                MsgBox("你点击的是button1")

            Case "Button2"

                MsgBox("你点击的是button2")

上一页  [1] [2] [3]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]windows下Apache+php+mysql的安装与配置图解
[操作系统]在Windows中玩转Linux操作系统  [操作系统]死马还当活马医:6种方法挽救Windows系统
[聊天工具]四大更新 Windows Live Msn 8.1评测  [聊天工具]Windows Live Messenger最新0683版亮相_联络工具_…
[聊天工具]Windows Live Mail招人爱的N个理由_联络工具_Wind…  [聊天工具]Windows Live Mail Desktop多图欣赏_联络工具_Win…
[聊天工具]OE老了 微软开发新邮件客户端取而代之_联络工具  [聊天工具]Windows Live Messenger中文版试用报告(一)__天极…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台