vb.net нужна помощь в стрельбе

  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
    

person Zachary Wheeler    schedule 23.03.2021    source источник


Ответы (1)


Вместо запуска событий просто создайте 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
person ZeroWorks    schedule 23.03.2021
comment
спасибо, что сработало - person Zachary Wheeler; 23.03.2021
comment
@ZacharyWheeler Отлично! Просто отметьте как решение. - person ZeroWorks; 24.03.2021