我动态创建comboBox控件并在其中添加项目,如下所示:
Dim comboTime As New ComboBox
Me.Panel1.Controles.Add(comboTime)
comboTime.Items.Add("Hour")
comboTime.Items.Add("Week")
comboTime.Items.Add("Day")
comboTime.Items.Add("Month")
comboTime.Items.Add("Year")
comboTime.SelectedIndex = 2
AddHandler comboTime.SelectedIndexChanged, AddressOf comboTime_selectedindexchanged
默认情况下," Day"由程序选择(索引2)。如果他/她选择索引0(小时),我想添加一条警告用户的消息。也许AddHandler comboTime需要一些代码声明,但我不知道如何做到这一点。有谁知道如何做到这一点?例如,如果"小时"如果选中,会弹出一个消息框并说出"这是小时"
我的问题不是如何添加消息框。但是如何在此代码之外单独获取AddHandler。
答案 0 :(得分:2)
这是我的解决方案,与完整示例之外的其他解决方案没有什么不同,并且稍微更好的方式来初始化控件,在用户选择日期时如何处理它。如果您需要稍后在代码中引用它,请随意命名控件。
如果某个项目未定位,则索引将为-1
此代码将放入Form load或Form Shown events
Dim cbo As New ComboBox
cbo.DataSource = New String() {"Hour", "Week", "Day", "Month", "Year"}
cbo.DropDownStyle = ComboBoxStyle.DropDownList
cbo.Location = New Point(25, 40)
Me.Controls.Add(cbo)
cbo.SelectedIndex = cbo.FindString("day")
AddHandler cbo.SelectedIndexChanged,
Sub(s As Object, ea As EventArgs)
If CType(s, ComboBox).Text.ToLower = "hour" Then
Console.WriteLine("Here")
End If
End Sub
以上内容适用于Framework 3.5或更高版本,而在此之前我们将执行以下操作
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim cbo As New ComboBox
cbo.DataSource = New String() {"Hour", "Week", "Day", "Month", "Year"}
cbo.DropDownStyle = ComboBoxStyle.DropDownList
cbo.Location = New Point(25, 40)
Me.Controls.Add(cbo)
cbo.SelectedIndex = cbo.FindString("day")
AddHandler cbo.SelectedIndexChanged, AddressOf IndexChanged
End Sub
Private Sub IndexChanged(s As Object, ea As EventArgs)
If CType(s, ComboBox).Text.ToLower = "hour" Then
Console.WriteLine("Here")
End If
End Sub
答案 1 :(得分:1)
这可以通过以下方式完成:
If comboTime.Text = "Hour" Then
MessageBox.Show("Hour selected", "Hour", MessageBoxButtons.OK)
End If
有关MessageBox的更多信息,请参阅here
答案 2 :(得分:1)
如果您决定取消弹出消息框,只需在文本框或标签中显示所选项目,这样就可以使表单更加用户友好,更易于使用。
为您的用户表单添加标签并将其命名为" lblCombo1"然后
在类中添加以下代码:
Private Sub comboTime_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboTime.SelectedIndexChanged
lblCombo1.Text = cmboTime.Text
End Sub