你可以先在窗体上加一个Command
然后把他的index
属性改为0
要添加10个按钮就这样写
Private
Sub
Form_Load()
For
i
=
1
To
10
Load
Command1(i)
Command1(i).Top
=
Command1(i
-
1).Top
+
Command1(0).Height
Command1(i).Visible
=
True
Next
事件如下
Private
Sub
Command1_Click(Index
As
Integer)
MsgBox
Index
End
Sub
'把图片的声明放在外面,类里面过程外面,而且要用As,不然等会儿没法用Dim myPicture As New System.Windows.Forms.PictureBox()
'动态生成的控件,加一行
Private Sub UserControl1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.Panel3.Controls.Add(myPicture)
myPicture.Size =New System.Drawing.Size(115, 160)
myPicture.TabStop =False
myPicture.Name ="p"
myPicture.Cursor = Cursors.Hand
AddHandler myPicture.Click, AddressOf mypic_Click '添加事件
AddHandler returnid, AddressOf idReturned '绑定事件和过程
End Sub
'再来个事件,放在声明的地方,就是类里面、过程外面
Private Event returnid(ByVal id As String) '这个事件可以传递值哦~
'普通的单击事件
Private Sub mypic_Click()
RaiseEvent returnid(myPicture.Name)
End Sub
'会传值的事件过程
Private Sub idReturned(ByVal id As String)
Dim bookInfo As New BookInfo
bookInfo.Show()
Me.Parent.Enabled = False
'用id变量做点什么吧
End Sub
如果要改事件的签名(参数一类的)的话,得重写控件。你可以这样自己弄一个事件。
可以考虑按钮数组,即新加的按钮与已存在的按钮name相同,仅具有不同的index,那么这一组按钮的相同事件都可以在同一个过程中实现,借由这个过程的index参数来区别用户单击的是哪个按钮。举个例子:两个按钮都叫做command1,index分别为0和1
index为0 的按钮的caption为“按钮1”
index为1 的按钮的caption为“按钮2”
双击其中之一可添加代码:
if index = 0 then
msgbox "你单击了按钮1"
else
msgbox "单击了按钮2"、
end if
这样新加了按钮之后,照样用已经存在的过程来处理单击事件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)