vb.net 需要帮助触发事件

时间:2021-03-23 16:59:11

标签: vb.net combobox devexpress-windows-ui

  1. 组合框用户进行选择,valuechanged 触发并给出 s 值(很好)

  2. 当 (1) 中的值更改时,我想从不同的组合框中触发另一个事件(这适用于单击事件,即当用户使用鼠标从 1 中选择值时,一切正常)。

  3. 问题是,如果用户使用箭头键更改 (1) 中的选择,则 (2) 中的事件不会触发。我需要它开火

     Private Sub AgencyOriLookup_EditValueChanged(sender As Object, e As EventArgs) Handles AgencyOriLookup.EditValueChanged
         cbSelection.SelectedItem = " "
         CloseCustomRange()
         cbSelection.SelectedItem = "Last 3 Months" 'Using this to fire the
         'selected value change event;
         'however, it does not fire when using the arrow keys
     End Sub
    
     Private Sub cbSelection_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbSelection.SelectedValueChanged
    
         If AgencyOriLookup.Text = "" Then
             'LabelControl4.Text = "Agency Not Selected"
             Exit Sub
         End If
         If cbSelection.SelectedItem <> "Custom Range" Then
             CloseCustomRange()
         End If
    
         strDateRangeDisplayed = String.Empty
         Select Case cbSelection.SelectedItem
             Case "This Month"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)
                 deEndDate.EditValue = DateTime.Now.Date
             Case "Last Month"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
             Case "Year To Date"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, 1, 1)
                 deEndDate.EditValue = DateTime.Now.Date
             Case "Last 3 Months"
                 Dim baseDate As Date = New Date(Now.Year, Now.Month, 1)
                 Dim startDate As Date = baseDate.AddMonths(-2)
                 deStartDate.EditValue = startDate
                 deEndDate.EditValue = DateTime.Now.Date
             Case "Last Year"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 1, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 12, 31)
             Case "1st Quarter-CurrentYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, 1, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year, 3, 31)
             Case "2nd Quarter-CurrentYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, 4, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year, 6, 30)
             Case "3rd Quarter-CurrentYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, 6, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year, 9, 30)
             Case "4th Quarter-CurrentYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year, 10, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year, 12, 31)
             Case "1st Quarter-LastYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 1, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 3, 31)
             Case "2nd Quarter-LastYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 4, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 6, 30)
             Case "3rd Quarter-LastYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 7, 1)
                 deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 9, 30)
             Case "4th Quarter-LastYear"
                 deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 10, 1)
             deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 12, 31)
             Case "Custom Range"
                 lcidteEndDate.ContentVisible = True
                 lcidteStartDate.ContentVisible = True
                 lcibtnSearch.ContentVisible = True
                 If _fromErrorsWarnings = False Then
                     lcicboSelectCriteria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                 Else
                     lcicboSelectCriteria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                 End If
                 lciEndDateLabel.ContentVisible = True
                 lciStartDateLabel.ContentVisible = True
                 lcibtnSearch.ContentVisible = True
         End Select
     end sub
    

1 个答案:

答案 0 :(得分:0)

只需创建一个 Sub 并在需要时调用它,而不是触发事件

这样的事情(我无法测试您的代码,因为不完整):

Private Sub AgencyOriLookup_EditValueChanged(sender As Object, e As EventArgs) Handles AgencyOriLookup.EditValueChanged

    cbSelection.SelectedItem = "Last 3 Months"
    Update()

End Sub

Private Sub cbSelection_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbSelection.SelectedValueChanged
    Update()
End Sub

Private Sub Update()
    If AgencyOriLookup.Text = "" Then
        'LabelControl4.Text = "Agency Not Selected"
        Exit Sub
    End If
    If cbSelection.SelectedItem <> "Custom Range" Then
        CloseCustomRange()
    End If
    '
    strDateRangeDisplayed = String.Empty
    Select Case cbSelection.SelectedItem
        Case "This Month"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)
            deEndDate.EditValue = DateTime.Now.Date
        Case "Last Month"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
        Case "Year To Date"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, 1, 1)
            deEndDate.EditValue = DateTime.Now.Date
        Case "Last 3 Months"

            Dim baseDate As Date = New Date(Now.Year, Now.Month, 1)
            Dim startDate As Date = baseDate.AddMonths(-2)
            deStartDate.EditValue = startDate
            deEndDate.EditValue = DateTime.Now.Date

        Case "Last Year"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 1, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 12, 31)
        Case "1st Quarter-CurrentYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, 1, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year, 3, 31)
        Case "2nd Quarter-CurrentYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, 4, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year, 6, 30)
        Case "3rd Quarter-CurrentYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, 6, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year, 9, 30)
        Case "4th Quarter-CurrentYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year, 10, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year, 12, 31)
        Case "1st Quarter-LastYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 1, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 3, 31)
        Case "2nd Quarter-LastYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 4, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 6, 30)
        Case "3rd Quarter-LastYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 7, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 9, 30)
        Case "4th Quarter-LastYear"
            deStartDate.EditValue = New DateTime(DateTime.Now.Year - 1, 10, 1)
            deEndDate.EditValue = New DateTime(DateTime.Now.Year - 1, 12, 31)
        Case "Custom Range"
            lcidteEndDate.ContentVisible = True
            lcidteStartDate.ContentVisible = True
            lcibtnSearch.ContentVisible = True
            If _fromErrorsWarnings = False Then
                lcicboSelectCriteria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            Else
                lcicboSelectCriteria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            End If
            lciEndDateLabel.ContentVisible = True
            lciStartDateLabel.ContentVisible = True
            lcibtnSearch.ContentVisible = True

    End Select
end sub