AddHandler VB.Net/C#的代码

时间:2016-01-04 14:27:11

标签: vb.net

我动态创建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。

3 个答案:

答案 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