LOAD OBJECT(INDEX)

博客主要围绕VB编程展开,介绍了在程序运行时动态向控件数组中添加控件的方法,使用Load语句,需保证控件数组至少有一个控件,且数量有限制。还说明了控件数组可节省代码、减少内存开销,分为静态和动态数组。此外,讲解了Set语句将对象引用赋给变量或属性的语法和注意事项。

时间:

      10点半-11点半。(上午的时间就剩下可怜的1个小时了。)

----------------以后说什么也要早起呀。。

        复习整理昨天的VB知识。

        想在程序运行时动态的在控件数组中加入一个控件,如一个按钮。这时,你可以使用Load语句,语法如下: Load Object(Index) 


       必须保证控件数组中至少有一个控件(可以将控件的Index属性设为0)。需要注意的是VB仅仅允许一个控件数组中包含32767个控件(PS:整型变量的数值范围为-32768~32767)。
        
      Private Sub cmdBtn_Click(Index As Integer)
    Dim btn As CommandButton
    Dim iIndex As Integer
    iIndex = cmdBtn.Count
    If iIndex <= 32767 Then
-----------------------------------------------------------------
        Load cmdBtn(iIndex)          ???????
==========================================
        Set btn = cmdBtn(iIndex)
------------------------------------------------------------------
        With btn
            .Top = cmdBtn(iIndex - 1).Top + 620
            .Caption = "Command" & iIndex + 1
            .Visible = True
        End With

------------------------------------------------------------------

        Set btn = Nothing     ??????????????
-----------------------------------------------------------
    End If
End Sub
---- 运行程序并点击按钮,程序就会在表单中增加新的按钮。 


       

      

-----------------------------------------------------------------
所谓控件数组可以简单理解为是共享控件名称、类型和事件的控件组,如绘制10个TEXT控件,它们的NAME属性均为txtindex。通过使用控件数组,可以使这些TEXT控件共享相同的事件过程。它的最大好处是:节省代码,增加可读性,同时也减少了内存的开销
           控件数组可以分为静态数组及动态数组两种,
整个下午的时间还是有的要好好计划:



===============================================================
   

        

Set语句返回

将对象引用赋给变量或属性。

语法

Set objectvar = {[New] objectexpression | Nothing}

Set 语句的语法包含下面部分:

部分描述
objectvar必需的。变量或属性的名称,遵循标准变量命名约定。
New可选的。通常在声明时使用 New,以便可以隐式创建对象。如果 New Set 一起使用,则将创建该类的一个新实例。如果 objectvar 包含了一个对象引用,则在赋新值时释放该引用。不能使用 New 关键字来创建任何内部数据类型的新实例,也不能创建从属对象。
objectexpression必需的。由对象名,所声明的相同对象类型的其它变量,或者返回相同对象类型的函数或方法所组成的表达式。
Nothing可选的。断绝 objectvar 与任何指定对象的关联。若没有其它变量指向 objectvar 原来所引用的对象,将其赋为 Nothing 会释放该对象所关联的所有系统及内存资源。

说明

为确保合法,objectvar 必须是与所赋对象相一致的对象类型。

Dim、Private、Public、ReDim以及 Static 语句都只声明了引用对象的变量。在用 Set 语句将变量赋为特定对象之前,该变量并没有引用任何实际的对象。

下面的示例说明了如何使用 Dim 来声明 Form1 类型的数组。Form1 实际上还没有实例。然后使用 Set 将新创建的 Form1 的实例的引用赋给 myChildForms 变量。在 MDI 应用程序中可以使用这些代码来创建子窗体。

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

通常,当使用 Set 将一个对象引用赋给变量时,并不是为该变量创建该对象的一份副本,而是创建该对象的一个引用。可以有多个对象变量引用同一个对象。因为这些变量只是该对象的引用,而不是对象的副本,因此对该对象的任何改动都会反应到所有引用该对象的变量。不过,如果在 Set 语句中使用 New 关键字,那么实际上就会新建一个该对象的实例。


在C#里,`private void Form1_Load(object sender, EventArgs e)` 是窗体加载事件的处理方法。此方法在窗体加载时自动调用,可用于初始化窗体的控件、数据和执行其他必要的设置工作。 ### 使用方法 - 该方法一般在窗体的设计器文件或者代码文件里定义。在Visual Studio中,可在窗体设计器中双击窗体,自动生成该方法。 - 方法签名固定为 `private void Form1_Load(object sender, EventArgs e)`,其中 `object sender` 代表触发事件的对象,`EventArgs e` 包含事件相关的数据。 ### 作用 - 初始化窗体控件的属性,像设置文本框的初始文本、下拉框的选项等。 - 加载初始数据,例如从数据库或者文件中读取数据并显示在控件上。 - 注册其他事件处理程序。 ### 示例 #### 示例1:生成随机数并显示在标签上 ```csharp private void Form1_Load(object sender, EventArgs e) { Random x = new Random(); int i = x.Next(100); // 生成一个大于等于0,小于100之间的随机数 this.label1.Text = string.Format("{0}", i); } private void button1_Click(object sender, EventArgs e) { Form1_Load(null, null); // 刷新界面 } ``` 此示例中,`Form1_Load` 方法在窗体加载时生成一个随机数,然后将其显示在 `label1` 控件上。点击按钮时,调用 `Form1_Load` 方法刷新界面 [^1]。 #### 示例2:处理小数并格式化显示 ```csharp private void Form1_Load(object sender, EventArgs e) { decimal dd = (decimal)11234567890.01; string ddstr = dd.ToString(); test(ddstr); } public void test(string num_str) { if (num_str.IndexOf(".") != -1) { // 小数 string[] strlist = num_str.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // 返回值不包含空字符串元素 var 整数 = strlist[0]; var 小数 = strlist[1]; var arry_int = 整数.ToArray(); StringBuilder sb = new StringBuilder(); var t = Math.Floor((double)整数.Length / 3); if (arry_int.Length % 3 == 0) { for (int i = 0; i < arry_int.Length; i++) { if (i % 3 == 0 && i != 0) { sb.Append(","); sb.Append(arry_int[i]); continue; } sb.Append(arry_int[i]); } } else { var t0 = arry_int.Length - (t * 3); for (int i = 0; i < arry_int.Length; i++) { if ((i - t0) % 3 == 0 && i != 0) { sb.Append(","); sb.Append(arry_int[i]); continue; } sb.Append(arry_int[i]); } } var result = sb.ToString(); } } ``` 这个示例里,`Form1_Load` 方法在窗体加载时将一个小数转换为字符串,接着调用 `test` 方法对其进行格式化处理 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值