当前位置:编程学习 > VB >>

VB.Net之Beta2全接触(一)随心所欲窗体外观转换实例

今天刚拿到beta2,因为不想邮购,一直等到现在,今天刚到手,就把“随心所欲窗体外观”程序拿来小试了一下(现在大部份的例程都很简单,Microsoft也只有一些Class A Class B 之类很抽象的示例,这个源码我当初在VB6中写出来,在beta1中足足写了一个月才成功,那时候不要说中文,连英文的帮助都找不到,不眠不休才搞定),这也是我比较满意的一个程序,如果用得好,足以制作出令人眩目的效果,所以我不想他失效,所以一定要试一试,一试才知道,在beta2中beta1的程序根本不能用了,要改的地方很多,很多默认的引用并不清楚,只好新建一个工程,重新写过,顺便把我遇到的问题注释在代码中间。痛苦的折腾了一番,终于成功。

全部代码如下:

请到我的网站去下源码吧(我现在还没有上网上传,我会把文章写好再上传源码,所以现在无法标明确切地址,好在首页更新一定有的,
要不我那里搜索功能也很强大,打入“窗体外观”的关键字肯定能找到的)


 

Public Class Form1
    Inherits System.Windows.Forms.Form  继承一个窗体的类
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    注意注意beta2这里的变化
    winforms类现在变成了windows.forms类
    不要想升级或修改beta1的程序,因为很多的基类重新定义了
    必须在beta2中新建,才能默认的有windws.forms这些引用
    如果手工添加|删除引用也可以
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    Dim Genie As AgentObjects.IAgentCtlCharacterEx  声明一个agent的对象
    Const DATAPATH As String = "MERLIN.ACS" 加载动画数据
    Public frmpre As Form1 声明一个新的窗体,请不要在这里使用初始化的方法或使用New方法
    Friend WithEvents AxAgent1 As AxAgentObjects.AxAgent
    Friend WithEvents lbExit As System.Windows.Forms.Label
    Friend WithEvents lbPre As System.Windows.Forms.Label
    Friend WithEvents lbShow As System.Windows.Forms.Label
    Friend WithEvents Label3 As System.Windows.Forms.Label
    Public Imindex As Short 声明一个整数
#Region " Windows Form Designer generated code "
    Sub New(Optional ByVal strImage As String = Nothing)
        &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
        注意注意beta2这里的变化
        构造函数NEW在beta2现在是在#Region的内部
        构造函数NEW在beta2中不支持重载方法,但是我用一个Optional 参数很快解决了问题
        &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
        MyBase.New() 直接调用父类的new过程
        Dim form1 As Form1 = form1
        &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
        注意注意beta2这里的变化
        直接使用form1等于me会出错,默认的form1是一个类,不是一个实例
        使用前要dim form1 as form1=form使声明为一个实例才能赋值
        &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
        form1 = Me 设定me关键字
        InitializeComponent() 下面是初始化组件,你也可以在下面使用call方法呼叫一个子过程(见前面的文章)
        If Not strImage Is Nothing Then
            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
            注意注意beta2这里的变化
            strImage<> Nothing 会出错
            请用 Not strImage Is Nothing
            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
            lbExit.Visible = False : lbShow.Visible = False : lbPre.Visible = False : Label3.Visible = False 新窗体不显示控制
            Me.Top = Me.Top + 150 新窗体的位置,top是距离屏幕顶部的高度
            Call SkinRegion(form1, strImage) 为窗体改变skin(外观)
        Else
            AxAgent1.Characters.Load("MERLIN", DATAPATH) 装载动画数据
            Genie = AxAgent1.Characters("MERLIN") 把Agent对象赋于声明的对象,简化书写的过程
            Genie.LanguageID = &H409S 设定语音ID
            Call SkinRegion(form1) 为窗体改变skin(外观)
        End If
    End Sub
    上面使用overloads定义了两个不同的new过程,在new过程中使用重载可以间接地使一个类产生很好的可重用性,如果你不明白为什么不写一个新的过程,而一定要使用重载
    那么你看看这里的用法,一定会有所启发的。
    Public Overloads Sub Dispose() 释放资源,终止程序
        MyBase.Dispose() 调用父类的方法
        Region1.Dispose() 释放GDI资

补充:软件开发 , Vb ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,