十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
思路
成都创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元洪山做网站,已为上家服务,为洪山各地企业和个人服务,联系电话:028-86922220
两种方式:
1、通过动态按钮方式创建,
2:通过控件数组方式创建。
个人倾向于通过控件数组的方式。一般应用都是有规律的创建的,所以用控件数组合适些。
举例
' 先在窗体上添加一个标准按钮
' 在属性窗口中,把它的 Index属性设置成 0
' 名称改为 cmdDynCmd (其它的名称也行,注意后面的说明)
' Visible 可以设置成 False
Option Explicit
Private lCmdIndex As Long
Private Sub LoadCmdButton()
'这儿就是加载动态按钮的
Dim i
For i = 0 To NNN '这儿NNN等于你需要的按钮数减1,可以用变量的
'你应该能通过你的“数据库中"a"表中"名称"字段”项目数 来确定值为多少
' *** 注意这儿的 cmdDynCmd 就是设计时确定的按键名称 ***
If (lCmdIndex 0) Then Load cmdDynCmd(i)
cmdDynCmd(i).Visible = True
'这儿的 Caption 属性,你自己用代码跟你的 数据库中"a"表中"名称"字段内容关联
cmdDynCmd(i).Caption = "动态按钮" i + 1
'这儿的 x 、y 你可以根据 i 的值来进行计算
cmdDynCmd(i).Top = X
cmdDynCmd(i).Left = Y
'直接 cmdDynCmd(i).move x, y也行
next
End Sub
' 这儿就是动态按钮的事件代码
' 根据 Index 判断是哪个按钮触发了事件
' 跟你事先设计好的控件数组完全是相同的用法
' ***** 注意!!!注意这儿的 cmdDynCmd 就是设计时确定的按键名称
Private Sub cmdDynCmd_Click(Index As Integer)
MsgBox "你点击的是第 " Index + 1 " 个动态按钮。", 64
'具体事件代码只能你自己写
End Sub
Dim I As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text = "继续"
TextBox1.Text = I
I = I + 1
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
I = 2
End Sub
代码如上 如图的效果
本来有个属性FlatStyle设置为Popup基本上能实现这个情况,怎奈有个线框怎么也弄不掉。FlatAppearance.BorderSize设置为0不起作用,只对Flat有用,所以用代码在Flat和Popup两种风格之间切换。
'在鼠标进入时设置为浮雕风格
Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter
Button1.FlatStyle = FlatStyle.Popup
End Sub
'离开时设置为平面风格,这样像标签一样只剩下文字,当然要FlatAppearance.BorderSize设置为0
Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
Button1.FlatStyle = FlatStyle.Flat
End Sub
'另外把UseVisualStyleBackColor 设置为 False也会好看一点。
Public Sub GenerateDynamiceButton()
'建立 坐标位置的变数, 方便一会儿安排 自动生产的button 的位置
Dim y As Integer = 15
Dim x As Integer = 0
' 用for loop 来建立 这些button 做 18只button
For ButtonIndex As Integer = 0 To 17
' 建造新的 button
Dim MyButton As New Button
'设定这新的button 的阔度
MyButton.Width = 80
'设定这新的button 的高度
MyButton.Height = 20
'我们暂定每行有4个BUTTON, 当每行有多个4个BUTTON 时重设行距, 令到下一行的和这一行的距离有10 个PIXEL
' 和重设x 坐标` = 0, 令到位置由头开始
If ButtonIndex Mod 4 = 0 Then
'设定 TOP 的 坐标位置令他可以和上一排的有10个PIXEL 的距离
y += MyButton.Height + 10
x = 0
End If
'设定文字 和 位置
' Set the text and set its top and left based on its dimensions and count
MyButton.Text = "My Button" ButtonIndex
'设定 TOP 的 坐标位置
MyButton.Top = y
'下面的CODE 可以令到这个BUTTON 和另一个BUTTON 有5个PIXEL 的距离
MyButton.Left = 26 + (x * (MyButton.Width + 5))
x += 1
'设定 BUTTON CLICK EVENT
AddHandler MyButton.Click, AddressOf MyButton_Click
'把button 加到 form 中
Me.Controls.Add(MyButton)
Next
End Sub
'处理 button click event
Private Sub MyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim btn As Button = sender
'pop up 一个自己button 的字的message
MsgBox(btn.Text)
制作一个按钮:
Dim my_Button As New Button
my_Button.SetBounds(Me.Width - 75, 0, 75, 23)
Me.Controls.Add(my_Button)
在软件运行前是看不到这个按钮,运行后可见,运行后想更改按钮位置,简单的方法启动一个事件,如textbox输入数值后通过Button的点击事件修改my_Button的顶点位置,还有的方法就是拖动,拖动应该是高级编程部分而且几十行代码,没有人愿意写
基本思路是在按钮的 MouseMove 事件中检测鼠标左键的状态,如果是按下就跟着移动按钮的位置。