0

エラーを表示 タイプ 'system.windows.forms.combobox' のオブジェクトをコードでタイプ 'system.windows.form.DateTimePicker' にキャストできません...

Private Sub UncheckMyControlsdtp()
    Dim dtp As DateTimePicker
    Try
        For Each dtp In EMPGBDATA.Controls
            If dtp.CalendarMonthBackground = Color.Red Then
                dtp.CalendarMonthBackground = Color.White
            End If
        Next
    Catch e As Exception
        MsgBox(e.Message)
    End Try
End Sub

友達が私のコードをチェックして解決策を教えてくれます...

4

2 に答える 2

1

列挙しているコントロールEMPGBDATA.Controlsのタイプが であることを確認する必要がありDateTimePickerます。

Private Sub UncheckMyControlsdtp()
    Try
        For Each ctrl In EMPGBDATA.Controls
            If TypeOf ctrl Is DateTimePicker Then
                Dim dtp As DateTimePicker = CType(ctrl, DateTimePicker)
                If dtp.CalendarMonthBackground = Color.Red Then
                    dtp.CalendarMonthBackground = Color.White
                End If
            End If
        Next
    Catch e As Exception
        MsgBox(e.Message)
    End Try
End Sub
于 2013-01-12T08:38:54.653 に答える
1

問題は、 のすべてのコントロールを繰り返し処理していることです。そのEMPGBDATA.Controls一部は のインスタンスではありませんDateTimePickerFor Eachインスタンスが正しいタイプであることを確認するには、ループ内を手動でチェックする必要があります。このような:

Private Sub UncheckMyControlsdtp()
    For Each ctl As Control In EMPGBDATA.Controls
        If TypeOf ctl Is DateTimePicker Then
            Dim dtp As DateTimePicker = DirectCast(ctl, DateTimePicker)

            If dtp.CalendarMonthBackground = Color.Red Then
                dtp.CalendarMonthBackground = Color.White
            End If
        End If
    Next
End Sub
于 2013-01-12T08:39:01.697 に答える