代码之家  ›  专栏  ›  技术社区  ›  Michael Galos

当我通过vb.net代码插入组合框时,如何使其具有事件?

  •  1
  • Michael Galos  · 技术社区  · 14 年前

    嗨,我对vb.net还是个新手… 对于有按钮的表单(按钮1),我有以下代码。 当我按下这个按钮时,它会添加一个带有一些值的组合框(每次按下按钮时,它会在下面添加一个新的组合框)。 如何设置和事件,以便更改组合框时,文本框将显示在其右侧? 基本上,我考虑的是根据在每个组合框中选择的内容采取不同的行为。

    Public Class frmEditor
        Private Const rowHeight = 25
        Dim datarows() As Action
        Dim currentrow As Integer
        Dim starttop As Integer
        Private Sub frmEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            currentrow = 1
            starttop = 20
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            CreateRow()
            currentrow = currentrow + 1
            starttop = starttop + rowHeight
        End Sub
    
        Private Sub CreateRow()
            Dim newrow As Action = New Action()
            ReDim Preserve datarows(currentrow)
            datarows(currentrow) = newrow
            datarows(currentrow).newAction(15, starttop, currentrow)
        End Sub
    
    End Class
    
    Public Class Action
        Private cbo As New ComboBox()
    
        Public Sub newAction(ByVal xleft As Integer, ByVal ytop As Integer, ByVal nrow As Integer)
            cbo.Top = ytop
            cbo.Left = xleft
            cbo.Visible = True
            cbo.Items.Add("Test1")
            cbo.Items.Add("Test2")
            frmEditor.Controls.Add(cbo)
    
        End Sub
    End Class
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Chase Florell    14 年前

    您需要添加一个处理程序

    AddHandler cbo.newAction, AddressOf newAction
    

    编辑:

    这是我做的一个例子。我希望能够在每个页面的底部添加一行链接,而不必向每个页面添加HTML。所以我建立了一个控件来为我做这件事。它的一部分是添加一个LoginStatus控件

            Protected Overrides Sub CreateChildControls()
               Dim lb As New LoginStatus
               With lb
                   .ID = "LoginStatus1"
                   AddHandler .LoggingOut, AddressOf LoginStatus1_LoggingOut
               End With
               Me.Controls.Add(lb)
            End Sub
    

    然后我的日志处理程序做了一点小魔术,以不打破我的URLrewriting。

            Private Sub LoginStatus1_LoggingOut(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs)
            'sign out the logged in user
            End Sub