vb.net - 点击时识别按钮?
问题描述
所以这就是我所拥有的:
当您单击“新建按钮”(Button1) 按钮时生成按钮的代码。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ActionsMade = ActionsMade + 1
Dim actionButton = New Windows.Forms.Button
ActionContainer.Controls.Add(actionButton)
actionButton.Text = "New Action " + ActionsMade.ToString
actionButton.Width = 107
actionButton.Height = 56
AddHandler actionButton.Click, AddressOf OnActionButtonClick
End Sub
当您单击创建的按钮时,它会显示一个输入框,您可以在其中键入要将按钮重命名为的内容。
Sub OnActionButtonClick()
If IsRenaming Then
Dim renameTo As String
renameTo = InputBox("Rename ActionButton To:")
Else
MessageBox.Show("Action started! Not renaming")
End If
End Sub
唯一的问题是,我无法识别这些按钮。
tl;博士:
- 我以编程方式创建了按钮
- 我想重命名它们
- 我不知道如何识别这些按钮并单独重命名它们
解决方案
这更简洁,包括一个可引用的按钮名称(例如Button_03):
Private Sub MakeButton_Click(sender As Object, e As EventArgs) Handles MakeButton.Click
Static ActionsMade As Integer = 0
ActionsMade += 1
ActionContainer.Controls.Add(New Button With {
.Name = $"Button_{ActionsMade:00}",
.Text = $"New Action {ActionsMade:00}",
.Size = New Size(107, 56),
.Location = New Point(100, 250 + 25 * ActionsMade)
})
AddHandler ActionContainer.Controls($"Button_{ActionsMade:00}").Click, AddressOf OnActionButtonClick
End Sub
请注意,在上面的代码中,我实际上并没有定义一个新按钮本身,只是在语句中对其进行了New-edControls.Add()
,然后使用生成的按钮名称来添加事件处理程序。
另一种方法是将按钮声明为独立对象,然后添加它:
Dim actionButton As New Button With {
.Name = $"Button_{ActionsMade:00}",
.Text = $"New Action {ActionsMade:00}",
.Size = New Size(107, 56),
.Location = New Point(100, 250 + 25 * ActionsMade)
}
ActionContainer.Controls.Add(actionButton)
AddHandler actionButton.Click, AddressOf OnActionButtonClick
其他注意事项:
使用
Static
ActionsMade
在调用之间保留其值的整数变量。这也可以是模块范围的变量,并从MakeButton_Click
Sub.xml 中删除。在根据值的格式化版本分配按钮
Name
和属性时使用字符串插值。Text
ActionsMade
使用按钮属性
Size
和Location
.根据 的值自动增加按钮垂直位置
ActionsMade
。
关于您的 Action Button 事件处理程序,它应该如下所示:
Private Sub OnActionButtonClick(sender As Object, e As EventArgs)
If ActionStarted Then
MessageBox.Show("Action started! Not renaming.")
Else
CType(sender, Button).Text = InputBox("Rename ActionButton To:")
End If
End Sub
请注意,我已经检查了已启动的操作,而不是正在进行的重命名,但这只是替代方法的说明。另请注意,您无需知道按钮的名称即可更改其属性。
推荐阅读
- python - 我使用 urllib.request 不断收到 HTTP 400 Bad Request 错误?
- javascript - 如何在另一个while循环中创建一个while循环?
- php - 需要帮助使用 php 实现多语言网站
- ocaml - 通过折叠将列表相乘
- java - Java - 如何在联系人列表中存储与某人相关的多个电话号码和关键字
- javascript - React-Native-Sound 在本地下载和播放音频不起作用
- vba - 用收件箱循环发件箱,从发件箱中删除具有相同主题行的邮件
- html - 浮动网格列的 CSS 媒体查询?
- python - 在 Python 中从字符串中提取数字
- linux - 块设备上的未对齐写入