vb用户控件制作讲解与实例
- 格式:doc
- 大小:41.50 KB
- 文档页数:15
vb教程编程实例详解VB教程编程实例详解VB(Visual Basic)是一种面向对象的编程语言,它可以用于开发Windows应用程序。
在这里,我们将详细解释一些VB 编程实例,以帮助初学者更好地理解和掌握这门语言。
编程实例1:计算器首先,让我们创建一个计算器的VB程序。
我们将使用VB的窗体和按钮来实现这个功能。
首先,我们需要在窗体上添加一些按钮,如"1"、"2"、"+"、"="等。
然后,我们需要用一个文本框来显示计算结果。
在窗体上双击"+"按钮并添加以下代码:```Private Sub ButtonPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPlus.ClickDim num1 As IntegerDim num2 As IntegerDim result As Integernum1 = Integer.Parse(TextBoxNum1.Text)num2 = Integer.Parse(TextBoxNum2.Text)result = num1 + num2TextBoxResult.Text = result.ToString()End Sub```在这个代码中,我们首先定义了三个变量:num1、num2和result,用于存储计算结果。
然后,我们使用Integer.Parse方法将文本框中输入的文本转换为整数类型,并将其赋值给num1和num2。
接下来,我们将num1和num2相加,将结果赋值给result,并使用result.ToString()方法将结果转换为字符串类型并显示在结果文本框中。
编程实例2:学生成绩管理系统接下来,让我们创建一个学生成绩管理系统的VB程序。
简单易学图文并茂创作控件自己创作控件,分三种主要的形式:复合控件,扩展控件,和自定义控件。
复合控件,顾名思义就是把现有的进行组合,让它们协作形成功能强大的新控件;扩展控件,是以某一现有控件为基础,让它具有新的功能;自定义控件,则是由作者完全操刀,建立一个全新的控件。
可以用一个比喻来理解这三种形式的区别:复合控件,就是你买好各个电脑配件,组装成一台电脑;扩展控件,就是把显卡上的零件更换几个,让它能力比标准产品更强大;自定义控件,就是自己制作一个名为“生人勿近”的硬件,他可以通过PCI插槽,安装到电脑上,一旦生人走近,它能识别并发出狗叫……综上,三种形式中,复合控件相对来说是最简单的;扩展控件在其次;自定义控件最难。
通常,我们使用前两种技术,就能创作出很复杂的控件了。
范例1:Excel的单元格Cell,当它没有焦点的时候,就是一个TextBlock,当它获得焦点,可以编辑的时候,就是一个TextBox框。
这样一个控件,将是我们今后制作表格控件的基础。
范例1中,我们会用到两种技术,复合控件和扩展控件。
在VS中,要进行如下的工作(推荐使用VS2010)1.新建一个Solution,名为Cell;2.添加一个名为“TestAPP”的WFP项目。
我们用他来测试成果;3.添加一个名为“Ctrl_Cell”的WFP用户控件项目。
然后,我们需要一个TextBlock,和一个TextBox控件,这是我们的演员。
考虑一下它们应该怎样演出,才能达到我们需要的效果:●平时这个控件,应该表现出TextBlock的外观;●当我们点击这个Label时,隐藏的TextBox控件跑到TextBlock的前面,并且它显示的值和TextBlock一样。
同时,这个值是可以编辑的;●编辑完TextBox的内容,按下Enter,或者点击屏幕上的其他控件,让TextBox失去焦点,TextBox消失。
TextBlock跑到前面来,并且显示编辑后的内容。
vb开发ocx实例【最新版】目录1.什么是 OCX?2.VB 开发 OCX 实例的过程3.OCX 控件的使用方法4.总结正文一、什么是 OCX?OCX(Object Control Extension)是一种可重用的软件组件,它是由 Microsoft 开发的一种 COM(Component Object Model)控件技术。
OCX 控件可以在不同的编程语言和平台之间进行互操作,这使得开发人员可以更轻松地创建具有丰富功能的应用程序。
二、VB 开发 OCX 实例的过程1.创建一个新的 ActiveX 控件库项目首先,在 Visual Basic 中创建一个新的 ActiveX 控件库项目。
这可以通过选择“新建”>“ActiveX 控件库”来实现。
2.设计 OCX 控件接下来,设计 OCX 控件。
这包括为控件添加属性、方法和事件。
例如,可以添加一个名为“HelloWorld”的按钮,当单击该按钮时,会触发一个名为“OnButtonClick”的事件,并显示一条消息框。
3.编译和测试 OCX 控件完成控件设计后,编译并测试 OCX 控件。
这可以通过选择“编译”来实现。
如果编译成功,将生成一个名为“YourControl.ocx”的文件。
4.在 VB 应用程序中使用 OCX 控件现在,可以将 OCX 控件添加到 VB 应用程序中。
首先,将生成的“YourControl.ocx”文件复制到应用程序项目的“Controls”文件夹中。
然后,在 Visual Basic 中引用该控件,并在窗体上添加一个实例。
三、OCX 控件的使用方法1.引用 OCX 控件在 VB 代码中引用 OCX 控件,需要使用“Imports”语句。
例如,要引用上面创建的“YourControl.ocx”控件,可以添加以下代码:```Imports YourControl```2.创建 OCX 控件实例在 VB 代码中创建 OCX 控件实例,需要使用“CreateObject”函数。
简单易学图文并茂创作控件自己创作控件,分三种主要的形式:复合控件,扩展控件,和自定义控件。
复合控件,顾名思义就是把现有的进行组合,让它们协作形成功能强大的新控件;扩展控件,是以某一现有控件为基础,让它具有新的功能;自定义控件,则是由作者完全操刀,建立一个全新的控件。
可以用一个比喻来理解这三种形式的区别:复合控件,就是你买好各个电脑配件,组装成一台电脑;扩展控件,就是把显卡上的零件更换几个,让它能力比标准产品更强大;自定义控件,就是自己制作一个名为“生人勿近”的硬件,他可以通过PCI插槽,安装到电脑上,一旦生人走近,它能识别并发出狗叫……综上,三种形式中,复合控件相对来说是最简单的;扩展控件在其次;自定义控件最难。
通常,我们使用前两种技术,就能创作出很复杂的控件了。
范例1:Excel的单元格Cell,当它没有焦点的时候,就是一个TextBlock,当它获得焦点,可以编辑的时候,就是一个TextBox框。
这样一个控件,将是我们今后制作表格控件的基础。
范例1中,我们会用到两种技术,复合控件和扩展控件。
在VS中,要进行如下的工作(推荐使用VS2010)1.新建一个Solution,名为Cell;2.添加一个名为“TestAPP”的WFP项目。
我们用他来测试成果;3.添加一个名为“Ctrl_Cell”的WFP用户控件项目。
然后,我们需要一个TextBlock,和一个TextBox控件,这是我们的演员。
考虑一下它们应该怎样演出,才能达到我们需要的效果:●平时这个控件,应该表现出TextBlock的外观;●当我们点击这个Label时,隐藏的TextBox控件跑到TextBlock的前面,并且它显示的值和TextBlock一样。
同时,这个值是可以编辑的;●编辑完TextBox的内容,按下Enter,或者点击屏幕上的其他控件,让TextBox失去焦点,TextBox消失。
TextBlock跑到前面来,并且显示编辑后的内容。
VBA 中的用户界面控件操作方法VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中进行编程和自动化操作的编程语言。
它允许用户使用可视化方式创建用户界面,并与用户界面上的控件进行交互。
本文将介绍VBA中常用的用户界面控件操作方法,以帮助您更好地利用VBA来开发应用程序。
以下是一些常见的用户界面控件及其操作方法。
1. 文本框(TextBox)文本框是一个常用的用户界面控件,用于接收并显示用户输入的文本信息。
以下是一些常见的文本框操作方法:- 设置文本框的值:使用`TextBox.Value`属性可以获取或设置文本框中的文本值。
例如,使用`TextBox1.Value = "Hello World"`可以将文本框中的文本值设置为"Hello World"。
- 获取文本框的值:使用`TextBox.Value`属性可以获取文本框中的文本值。
例如,使用`MsgBox TextBox1.Value`可以显示文本框中的文本值。
- 清除文本框的值:使用`TextBox.Value = ""`可以清除文本框中的文本值。
2. 按钮(Button)按钮是用户界面中常用的控件,用于执行特定的操作。
以下是一些常见的按钮操作方法:- 添加按钮的点击事件处理程序:在VBA中,可以通过双击按钮来创建按钮的点击事件处理程序。
在事件处理程序中编写代码,以定义按钮被点击时所执行的操作。
例如,可以在按钮的点击事件处理程序中添加代码来显示一个消息框。
- 模拟按钮的点击:除了用户主动点击按钮外,还可以使用VBA代码来模拟按钮的点击操作。
例如,使用`CommandButton1_Click`来触发按钮的点击事件。
3. 列表框(ListBox)列表框是用于显示和选择多个选项的控件。
以下是一些常见的列表框操作方法:- 添加选项:使用`ListBox.AddItem`方法可以向列表框中添加一个新的选项。
vb开发ocx实例【原创版】目录1.OCX 控件的概述2.VB 开发 OCX 控件的步骤3.创建 OCX 控件4.在 VB 中使用 OCX 控件5.测试和调试 OCX 控件正文一、OCX 控件的概述OCX(Object Control Extension)控件是一种可重用的软件组件,可以用于开发各种应用程序。
它们是基于 COM(Component Object Model)技术的,可以在不同的编程语言和平台之间进行交互。
OCX 控件在 Visual Basic(VB)开发中非常常用,可以为程序增加功能和特性。
二、VB 开发 OCX 控件的步骤1.创建 OCX 控件:首先,需要使用适当的开发工具(如 Visual Studio)创建一个新的 OCX 控件项目。
在项目中,可以编写控件的属性、方法和事件处理程序等代码。
2.编译 OCX 控件:在开发过程中,需要定期编译 OCX 控件以确保没有错误。
编译完成后,会生成一个 OCX 文件,该文件包含了控件的二进制代码和相关资源。
3.在 VB 中使用 OCX 控件:在 VB 项目中,需要引用刚才创建的OCX 控件。
这可以通过在项目属性中的“引用”选项卡中添加 OCX 文件来完成。
4.测试和调试 OCX 控件:在 VB 项目中使用 OCX 控件后,需要对控件进行测试和调试,以确保其功能和性能符合预期。
三、创建 OCX 控件在创建 OCX 控件时,需要遵循以下步骤:1.打开 Visual Studio,并创建一个新的 ActiveX 控件项目。
2.在项目中添加控件的属性、方法和事件处理程序等代码。
3.编译项目,生成 OCX 文件。
四、在 VB 中使用 OCX 控件在 VB 中使用 OCX 控件,需要执行以下操作:1.打开 VB 项目,并在工具箱中找到 OCX 控件。
2.将 OCX 控件拖放到 VB 窗体上,并调整其大小和位置。
3.在代码中引用 OCX 控件,并设置其属性值。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==vb制作控件范例篇一:VB用户控件制作讲解与实例制作用户控件,主要就是进行以下三项代码编写工作:1.定义控件的属性、事件和方法,其中属性是最常使用的。
2.保存和读取中间用户设置的属性值。
3.为达到你的预定目的而调用的各种技术手段。
在用户控件中定义的属性、事件、方法,其性质都必须是公用的,也就是说,只有用 Public 来定义,这样你才能在主程序代码中使用这些事件和方法,以及设置或获取这些属性值,也只有公用的属性才会在窗体页面相关控件的属性窗口显示出来。
一、属性属性是用户控件最基本的东东,用户控件可以没有事件,可以没有方法,但不能没有属性(当然,技术上来说是可以没有属性的,但这样的控件使中间用户无法进行任何设置,是没有什么意义的)。
那么,如何定义用户控件的属性呢?为用户控件添加属性有两种办法:1.公用变量法:public 变量名称 as 类型这里的变量名称就是属性名称。
这样定义的属性一般不会保存属性值,所以常常用作只读属性,在笔者的用户控件中,用于对主程序返回一个必要的值。
例如“四则运算”控件中的“ComputeAnswer”属性:Public ComputeAnswer As String它返回的是计算结果,而计算结果是不需要保存在控件中的,所以把它用公用变量法定义。
再例如消息框控件中的 FeedValue 属性:Public FeedValue As Integer '返回值它返回最终用户选中的消息框按纽的编号,这个编号也只需要在主程序中处理,而无需保存在控件中,所以也用公用变量法定义成只读属性。
2.property 过程法:public property Get 过程名称() as 类型……end propertypublic property Let 过程名称(new值 as 类型)……end property这里的过程名称就是属性名称。
VB实现自我注册控件VB语言是一种面向对象的编程语言,可用于开发图形用户界面(GUI)应用程序。
在VB中,可以通过编写自定义控件来增强应用程序的功能。
本文将介绍如何使用VB实现自我注册控件。
1.创建自定义控件:首先,需要创建一个新的VB项目,并添加一个新的用户控件。
可以通过以下步骤完成:-在"解决方案资源管理器"窗口中,右键单击项目名称,选择"添加"->"新建项"。
-在弹出的对话框中选择"用户控件",并指定一个名称,然后点击"添加"按钮。
-在设计视图中,可以向控件添加所需的控件和代码,以满足应用程序的需求。
2.实现自我注册功能:自我注册是指在用户控件中编写代码来自动将控件注册到工具箱中,以便在其他项目中重复使用。
可以通过以下步骤实现自我注册功能:- 使用`ToolboxItem(true)`属性标记自定义控件类,使之能够在工具箱中显示。
- 编写一个自定义的设计器类,并使用`Designer`属性将其与自定义控件类关联。
-在用户控件的代码视图中,增加以下代码:```vb<ToolboxItem(True)><Designer(GetType(CustomControlDesigner))>Public Class CustomControl'控件的代码和属性'控件的构造函数和事件处理方法End ClassPublic Class CustomControlDesignerInherits System.Windows.Forms.Design.ControlDesignerDim svc As ITypeResolutionService =CType(Me.GetService(GetType(ITypeResolutionService)), ITypeResolutionService)svc.ReferenceAssembly(System.Reflection.Assembly.GetExecutin gAssembly(.Location)Dim typeName As String = Me.GetType(.Namespace & "." & Me.GetType(.Name.Substring(0, Me.GetType(.Name.Length - "Designer".Length)Dim type As Type = svc.GetType(typeName)If (type IsNot Nothing) ThenDim host As IDesignerHost =CType(Me.GetService(GetType(IDesignerHost)), IDesignerHost) Dim tp As ToolboxItem = New ToolboxItem(type.FullName)Dim tlh As System.Drawing.Design.ToolboxItemCreatorCallback = New System.Drawing.Design.ToolboxItemCreatorCallback(AddressOf CreateInstance)type.Assembly.GetCustomAttributes(GetType(ToolboxItemAttribu te), False)HosttoolboxService.AddCreator(tlh, tp)End IfEnd SubPrivate Function CreateInstance(ByVal serializedObject As icContainer, ByVal reportedError As String) As Object Return cf.CreateInstance(serializedObject, reportedError)End FunctionEnd Class```通过以上步骤,自定义控件将被自动注册到工具箱中,并可以在其他VB项目中使用。
VB表格控件总览与例程说明一.表格控件总览:在VB开发环境中,表格控件在界面开发元素中占有重要的地位。
它不仅有外观整洁、表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信息时代的到来,它的应用将更加的广泛。
那么在VB平台下,如何操作这一功能强大的控件元素呢?事实上我们知道,VB平台下面的表格控件是相当丰富的,总结下来提供了4种类型:Microsoft Data Bound grid Control、Microsoft Datagrid Control、Microsoft Flexgrid Control、Microsoft Hierarchial Flexgrid Control.这四种表格各有其特点,下面我们一一讨论。
1. Microsoft Data Bound grid Control此控件主要用于数据绑定(可以不绑定,但是因为不提供对单个cell的控制支持,所以实际上这样做是不经济的)。
具体说来,就是数据源比较固定的情况下可以使用这种控件。
具体使用方法是设定此控件的datasource属性,就可以不用编写任何代码就可以显示该数据源所指向的记录数据。
比如可以将datasource设置为一个data控件,而data控件又指向数据库"成绩"的一个"语文"表,那么当程序运行时,它就自动显示此"语文"表的数据。
从上面的分析看得出来,这个控件虽然操作方便,但是它也有局限性,就是不能对显示的数据进行灵活的控制操作,比如有些数据允许用户修改,有些数据却不允许用户修改,而此控件却只能提供全部数据源的原子操作:即要么全部允许修改,要么就全部不允许。
还有另外此控件也不提供对单个单元格(cell)进行操作,所以提供不了更为个性化的界面风格。
2. Microsoft Datagrid Control此控件跟前面介绍的Data Bound grid Control控件很相似,也是主要进行绑定操作,而缺点和Data Bound grid Control完全一样。
1.定义控件的属性、事件和方法,其中属性是最常使用的。
2.保存和读取中间用户设置的属性值。
3.为达到你的预定目的而调用的各种技术手段。
在用户控件中定义的属性、事件、方法,其性质都必须是公用的,也就是说,只有用Public 来定义,这样你才能在主程序代码中使用这些事件和方法,以及设置或获取这些属性值,也只有公用的属性才会在窗体页面相关控件的属性窗口显示出来。
一、属性属性是用户控件最基本的东东,用户控件可以没有事件,可以没有方法,但不能没有属性(当然,技术上来说是可以没有属性的,但这样的控件使中间用户无法进行任何设置,是没有什么意义的)。
那么,如何定义用户控件的属性呢?为用户控件添加属性有两种办法:1.公用变量法:public 变量名称as 类型这里的变量名称就是属性名称。
这样定义的属性一般不会保存属性值,所以常常用作只读属性,在笔者的用户控件中,用于对主程序返回一个必要的值。
例如“四则运算”控件中的“ComputeAnswer”属性:Public ComputeAnswer As String它返回的是计算结果,而计算结果是不需要保存在控件中的,所以把它用公用变量法定义。
再例如消息框控件中的FeedValue 属性:Public FeedValue As Integer '返回值它返回最终用户选中的消息框按纽的编号,这个编号也只需要在主程序中处理,而无需保存在控件中,所以也用公用变量法定义成只读属性。
2.property 过程法:public property Get 过程名称() as 类型……end propertypublic property Let 过程名称(new值as 类型)……end property这里的过程名称就是属性名称。
而property 过程法又有两种:一种是如上所述的标准过程法,另一种就是枚举法。
㈠标准过程法这是用得最多的一种属性定义方法。
在用户控件的代码页面选中“工具→添加过程”,会跳出一个对话框,然后在单选按纽中选择“属性”,再在“名称”栏中输入属性名,点击确定,VB 就会自动生成上述的几行代码,你将“类型”改为你所需要的,再输入相关代码即可。
标准过程法中,Get 过程和Let 过程一般是成对出现的。
例如“闪烁标签”控件中定义闪烁时的前景颜色FlickerForeColor 属性的代码:Public Property Get FlickerForeColor() As OLE_COLOR '闪烁时的文字色FlickerForeColor = mGlintForeColorEnd PropertyPublic Property Let FlickerForeColor(ByVal newColor As OLE_COLOR) mGlintForeColor = newColorPropertyChanged "FlickerForeColor"End Property这两段代码中的“OLE_COLOR”是颜色数据类型,实质上也是长整形的数据类型,但它会自动调出颜色对话框。
“FlickerForeColor”是属性名称,在窗体界面相关控件的属性窗口中显示的就这个属性名称。
而“mGlintForeColor”是中间变量,中间变量是私用的,用Dim 定义即可。
在用过程法定义属性时通常都需要中间变量。
中间变量的身份是“代表”(代表属性名),作用有两个,一是上传下达,在Get/Let 过程与ReadProperties/WriteProperties 过程中充当“邮递员”;二是参与,在许多别的过程中都要与中间变量打交道。
Get 过程的作用是获取相关的属性值,并将属性名称和属性值显示在属性窗口(如果你去掉这个过程,在属性窗口就不会出现相关的属性名称和属性值了)。
它在三种情况下被激活:①中间用户在窗体页面刚刚把焦点移到窗体上的控件时(例如点击该控件),在属性窗口显示出原先设置的属性值;②中间用户在属性窗口修改了属性值,在属性窗口显示出修改后的属性值;③程序运行中用代码获取属性值时,假设窗体代码有这么一句:RGB = Cipher.BackColor,那么也会激活该过程。
Let 过程的作用是设置相关的属性值,它在两种情况下被激活:①中间用户在属性窗口修改了控件的属性值(执行顺序是:Get 过程→Let 过程→Get 过程);②程序运行中用代码设置新的属性值时,例如:Cipher.BackColor = RGB。
变量NewValue 是被赋的新值(这个变量名是可以改变的),你可以把得到的NewValue 的值按自己的需求作任何用途。
要注意的是,如果这个属性是一个对象,那么就不能用Let 过程而必须用Set 过程了,这是因为保存在控件内部的对象变量,保存的并不是对象的拷贝,而只是对象的引用(也就是一个内存地址)。
所以在它的Get 和Set 两个属性过程中,均须在等式的前面加上“Set”关键字。
来看看“四则运算”控件中的有关代码:Public Property Get Font() As FontSet Font = Text1.FontEnd PropertyPublic Property Set Font(ByVal newFont As Font)Set Text1.Font = newFontPropertyChanged "Font"End Property这是设置文本框的Font 属性的,而Font 本身也是一个对象,所以必须使用Set 了。
还有Picture 属性也是如此,它也必须使用Set 过程。
然而,它这个对象却有一点特殊之处:如果你想在程序运行当中使用LoadPicture 语句动态加载图片的话,你就必须给它增加一个Let 过程,否则,你将只能在设计模式时在属性窗口加入图片。
而新增的Let 过程中不需要任何代码,只要一个注释符就行了。
以“酷时钟”控件中的Picture 属性为例:Public Property Get Picture() As PictureSet Picture = UserControl.PictureEnd PropertyPublic Property Set Picture(ByVal NewPic As Picture)Set UserControl.Picture = NewPicPropertyChanged "Picture"End PropertyPublic Property Let Picture(ByVal NewPicture As Picture)'End Property㈡枚举法枚举是一种很常见的的方式,它提供了一个下拉列表和若干选项让用户选择。
这样既方便了用户的操作,又不用考虑过多的兼容性和错误处理问题,简化了属性设置,而且更加安全。
要实现枚举法,首先必须建立一个枚举结构,放在声明部分,然后在结构中给出一系列的常量和对应的字符串。
后面的常量值必须是比前面常量值大的整数。
如果没有给出常量,那么VB 会自动为其赋值,第一个字符串赋值为零,其它的值则为前面一个数加一。
例如在“特效标签”控件中,字体打印特技的枚举结构声明:Public Enum cTxtEffect雕刻'自动赋值=0立体'自动赋值=1浮雕'自动赋值=2End Enum如果你要为项目赋值为从 1 开始,也是可以的(当然有关代码要改一下):Public Enum cTxtEffect雕刻= 1立体= 2浮雕= 3End Enum要实现枚举属性,还必须创建一个带有Let 和Get 属性过程的标准属性,但必须将属性的类型声明为枚举类型。
仍以“特效标签”控件为例,你还必须有这样两个过程:Public Property Get TxtEffect() As cTxtEffectTxtEffect = mTxtEffectEnd PropertyPublic Property Let TxtEffect(ByVal NewValue As cTxtEffect)mTxtEffect = NewValuePropertyChanged "TxtEffect"End Property注意这两个过程中的数据类型都改为了cTxtEffect。
枚举属性的读、写、保存和检索,都和标准属性是一样的。
3.保存或读取属性值上述的Let 过程中的PropertyChanged 方法是用户控件特有的方法,其作用是,通知系统某个属性发生了改变,系统根据具体情况决定是否将改变后的属性值保存到属性包(或 .frm 文件)中。
所谓具体情况是指:在设计模式(正在被中间用户使用)就保存,在运行模式(正在被最终用户使用)就不保存。
比如你的程序代码中有这么一句:Cipher.BackColor = RGB,那么运行该程序到这一句时,就会将Cipher 控件的背景色改变为RGB 所代表的颜色,但不会将这个RGB 值保存到属性包中,所以,下次你运行程序时,只要没有运行到这一句,Cipher 控件的背景色依然是你设计时的颜色。
保存属性值是由WriteProperties 事件过程执行的,在销毁创建的控件之前,该事件会根据PropertyChanged 方法的提示,以及当时的运行模式,来决定是否通知PropertyBag 对象把数据写入属性包(或 .frm 文件)中。
保存时,所有在该事件过程中的属性值都会同时保存,而不仅仅是保存某一个提示改变的属性值。
读取属性值是由ReadProperties 事件过程执行的,在创建控件之前,该事件会通知PropertyBag对象从属性包(或 .frm 文件)中把保存的所有属性值都同时读取出来,读出的数据由Get 过程使用。
PropertyBag 对象是具体实施保存或读取功能的,它有两个方法:WriteProperty 方法用来写属性值,ReadProperty 方法用来读属性值。
特别提醒:对于新手来说,一定要搞清楚cTxtEffect、mTxtEffect、TxtEffect 和“TxtEffect”这四个东东的意义:cTxtEffect:是结构名。
mTxtEffect:是代表cTxtEffect 结构中某个项目值的中间变量,如果没有枚举结构,则是代表属性值的中间变量,它是模块级的变量。
TxtEffect:是属性名,它会出现在窗体页面的属性窗口中。
“TxtEffect”:是保存到属性包时所用的名称,笔者为了方便,把它与属性TxtEffect 取了同一个名称,但并不是同一个概念,它只出现以下在三个方法中:PropertyChanged 方法、ReadProperty方法以及WriteProperty 方法中,你完全可以另外取个名,但在这三个方法中必须是完全同名的。