[RESOLVED] Raising events from a list of controls.
I have a QA form. On this form, I am generating anywhere from 1 to 15 QAControls. Here is the relevant code. The Variable is mvarQACntrls. As you can see it is a list.
Option Strict On
Option Explicit On
Public Class frmQA
Private mvarDBI As New DatabaseConnectionInformation
Private mvarSQL As MySQLCL
Private WithEvents mvarQACntrls As New List(Of QAControl)
Private mvarCurrentPage As Integer = 0
Private mvarPageCount As Integer = 1
Private mvarItemsPerPage As Integer = 15
Private mvarCaseIDS As New List(Of Long)
Private mvarEmp As clsEmployee
Private WithEvents AA As QAControl
Private mvarFilterID As Long
Public Sub Init()
SetDisplay()
End Sub
Private Sub SetDisplay()
SetCount()
Me.lblStatusinfo.Text = "Loading Data..."
Me.StatusStrip1.Refresh()
Dim NC As Integer = 15
If mvarCaseIDS.Count > mvarItemsPerPage Then
Dim CCID As Integer = mvarItemsPerPage * mvarCurrentPage
If CCID + mvarItemsPerPage > mvarCaseIDS.Count - 1 Then
NC = mvarCaseIDS.Count - CCID
End If
For I As Integer = 0 To NC - 1
AA = New QAControl
mvarQACntrls.Add(AA)
mvarQACntrls(I).Parent = Me
mvarQACntrls(I).Top = I * 36 + 36
mvarQACntrls(I).DBI = mvarDBI
mvarQACntrls(I).EmployeeInfo = mvarEmp
mvarQACntrls(I).CaseID = mvarCaseIDS(CCID + I)
AA = Nothing
Next
For I As Integer = 0 To NC - 1
mvarQACntrls(I).Show()
Next
End If
Me.lblCurrentPage.Text = CType(mvarCurrentPage + 1, String)
Me.lblStatusinfo.Text = "Idle"
Me.StatusStrip1.Refresh()
End Sub
Private Sub RefreshDisplay()
Me.lblStatusinfo.Text = "Loading Data..."
Me.StatusStrip1.Refresh()
Me.SuspendLayout()
Dim NC As Integer = 15
If mvarCaseIDS.Count > mvarItemsPerPage Then
Dim CCID As Integer = mvarItemsPerPage * mvarCurrentPage
If CCID + mvarItemsPerPage > mvarCaseIDS.Count - 1 Then
NC = mvarCaseIDS.Count - CCID
End If
For I As Integer = 0 To NC - 1
mvarQACntrls(I).CaseID = mvarCaseIDS(CCID + I)
Next
For I As Integer = NC To mvarItemsPerPage - 1
mvarQACntrls(I).Hide()
Next
End If
Me.lblCurrentPage.Text = CType(mvarCurrentPage + 1, String)
Me.ResumeLayout()
Me.lblStatusinfo.Text = "Idle"
Me.StatusStrip1.Refresh()
End Sub
Private Sub SetCount(Optional ByVal OB As Integer = -1)
Me.lblStatusinfo.Text = "Getting Case count..."
Me.StatusStrip1.Refresh()
mvarCaseIDS.Clear()
''''GET DATA FROM DB
If mvarSQL.HasRows Then
While mvarSQL.Read()
mvarCaseIDS.Add(mvarSQL.GetLong("CaseID"))
End While
End If
mvarSQL.Close()
mvarSQL.CloseConnection()
mvarSQL = Nothing
Me.lbQACount.Text = mvarCaseIDS.Count.ToString
Dim CC As Integer = mvarCaseIDS.Count Mod mvarItemsPerPage
Dim TP As Integer
If CC = 0 Then
CC = mvarCaseIDS.Count
TP = 0
Else
CC = mvarCaseIDS.Count - CC
TP = 1
End If
TP = TP + CType(CC / mvarItemsPerPage, Integer)
Me.lblTotalPages.Text = TP.ToString
Me.lbQACount.Text = mvarCaseIDS.Count.ToString
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
Me.Cursor = Windows.Forms.Cursors.WaitCursor
mvarCurrentPage += 1
RefreshDisplay()
Me.Cursor = Windows.Forms.Cursors.Default
End Sub
Private Sub mnuOBDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOBDate.Click
Me.Cursor = Windows.Forms.Cursors.WaitCursor
SetCount(-1)
RefreshDisplay()
Me.btnOBRush.Checked = False
Me.btnOBDate.Checked = True
Me.Cursor = Windows.Forms.Cursors.Default
End Sub
Private Sub AA_FilterBy(ByVal Type As String, ByVal Value As Long) Handles AA.FilterBy
Me.Cursor = Windows.Forms.Cursors.WaitCursor
If Type = "Adj" Then
mvarFilterID = Value
SetCount(2)
Else
mvarFilterID = Value
SetCount(3)
End If
Me.Cursor = Windows.Forms.Cursors.Default
End Sub
End Class
My QA Control raises the event just fine with the following code, but there really isn't an object to catch the event. How can I have my control call the function on the display form.
Private Sub mnuFilterByAd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFilterByAd.Click
RaiseEvent FilterBy("Ad", mvarAdID)
End Sub
Private Sub mnuFBCM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFBCM.Click
RaiseEvent FilterBy("CM", mvarCMID)
End Sub

