国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在VB.Net中創(chuàng)建使用控件數(shù)組

2024-07-10 13:00:40
字體:
供稿:網(wǎng)友
注冊(cè)會(huì)員,創(chuàng)建你的web開發(fā)資料庫, 

在vb.net中創(chuàng)建使用控件數(shù)組

首先創(chuàng)建一個(gè)button類型控件數(shù)組:

1、創(chuàng)建“windows應(yīng)用程序”類型的工程,添加名為buttonarray的類,并使該類繼承 system.collection.collectionbase 類。system.collections.collectionbase類是.net框架類庫中為集合操作提供抽象的基類,通過對(duì)它的繼承可以為我們的buttonarray類具備集合增加、刪除、索引的功能。

2、為buttonarray類添加parentform屬性,即控件組所在窗體,創(chuàng)建初始化函數(shù)(構(gòu)造函數(shù));

3、為控件數(shù)組類增加additem方法,該方法在控件數(shù)組類中添加成員;

4、為控件數(shù)組類增加removeitem方法,該方法在控件數(shù)組中刪除一個(gè)成員。

 

示例代碼:

public class buttonarray

    inherits system.collections.collectionbase

    private readonly parentform as system.windows.forms.form

    public sub new(byval pform as system.windows.forms.form)

        parentform = pform

    end sub

    default public readonly property item(byval index as integer) as system.windows.forms.button

        get

            return me.list.item(index)   ' buttonarray的list 屬性從collectionbase 繼承

        end get

    end property

    public sub additem()

        dim btnitem as new system.windows.forms.button

        me.list.add(btnitem)

        parentform.controls.add(btnitem)                  '向窗體中增加控件

        btnitem.tag = me.count                            'count屬性從collectionbase 繼承

        btnitem.top = me.count * 30

        btnitem.left = 200

        btnitem.text = "button" & me.count.tostring

        addhandler btnitem.click, addressof btnitem_click '綁定事件處理程序

    end sub


    public sub additem(byval btnitem as system.windows.forms.button)

        me.list.add(btnitem)
        addhandler btnitem.click, addressof btnitem_click '綁定事件處理程序

    end sub
    public sub removeitem()

        if me.count > 0 then

            parentform.controls.remove(me(me.count - 1))

            me.list.removeat(me.count - 1)

        end if

    end sub

    public sub btnitem_click(byval sender as object, byval e as system.eventargs)

        '在這里編寫控件數(shù)組對(duì)點(diǎn)擊事件的響應(yīng)

        '例如:

        msgbox("點(diǎn)擊:" & sender.gettype().tostring & ctype(ctype(sender, button).tag, string))

    end sub

end class


 

 

使用創(chuàng)建的控件數(shù)組

在form1中放置兩個(gè)按鈕button1、button2,分別測(cè)試控件數(shù)組的增添、刪除。

雙擊form添加代碼:

public class form1

    inherits system.windows.forms.form

 

……windows窗體設(shè)計(jì)器生成的代碼……

    dim buttons as new buttonarray(me)

 

private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click

        buttons.additem()

    end sub

 

private sub button2_click(byval sender as system.object, byval e as system.eventargs) handles button2.click

        buttons.removeitem()

    end sub

end class


其他的控件數(shù)組也可以用類似的方式來實(shí)現(xiàn)
例如 label控件數(shù)組

labelarray.vb代碼如下:
public class labelarray
    inherits system.collections.collectionbase

    private readonly parentform as system.windows.forms.form

    public sub new(byval pform as system.windows.forms.form)

        parentform = pform

    end sub

    default public readonly property item(byval index as integer) as system.windows.forms.label

        get

            return me.list.item(index)   ' buttonarray的list 屬性從collectionbase 繼承

        end get

    end property


    public sub additem(byval btnitem as system.windows.forms.label)

        me.list.add(btnitem)

        addhandler btnitem.click, addressof btnitem_click '綁定事件處理程序

    end sub
   


    public sub btnitem_click(byval sender as object, byval e as system.eventargs)

        '在這里編寫控件數(shù)組對(duì)點(diǎn)擊事件的響應(yīng)

        '例如:

        msgbox("點(diǎn)擊:" & sender.gettype().tostring & ctype(ctype(sender, label).tag, string))

    end sub
end class


使用創(chuàng)建的label控件
在form1中放置兩個(gè)按鈕label1、label2

雙擊form添加代碼:

public class form1

    inherits system.windows.forms.form


#region " windows 窗體設(shè)計(jì)器生成的代碼 "

    public sub new()
        mybase.new()

        '該調(diào)用是 windows 窗體設(shè)計(jì)器所必需的。
        initializecomponent()

        '在 initializecomponent() 調(diào)用之后添加任何初始化
        '用來綁定label
        bindarray()

    end sub
……windows窗體設(shè)計(jì)器生成的其他代碼……

#end region
  dim labels as new labelarray(me)
  public sub bindarray()
        me.label1.tag = "1111"
        me.label2.tag = "222"
        labels.additem(me.label1)
        labels.additem(me.label2)
    end sub
end class

然后可以測(cè)試點(diǎn)擊兩個(gè)label可以顯示相應(yīng)的tag的信息。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 云安县| 重庆市| 青冈县| 布拖县| 航空| 西乌| 林州市| 锦屏县| 丁青县| 阿克苏市| 南丹县| 邵东县| 乌兰浩特市| 东乡| 永安市| 永城市| 东方市| 马尔康县| 大渡口区| 永川市| 天津市| 汉中市| 新源县| 城口县| 长治市| 麻栗坡县| 乐平市| 桑日县| 黔西| 岳阳市| 长宁县| 长春市| 巫山县| 日喀则市| 衡山县| 迁安市| 博野县| 彩票| 寻乌县| 新余市| 喜德县|