Я обновляю некоторый код, чтобы разрешить Option Strict On. Одна из проблем, которая возникает, является поздним связыванием. У меня есть Form
с несколькими необходимыми товарами разных типов (TextBox
, ComboBox
и т. Д.). У меня есть функция проверки действительности Form
, а затем установите фокус на первый элемент управления, который не имеет значения.Опция Strict On, set Focus of unknown object type
Без опции Strict On, я мог бы просто иметь базовый Object
и устанавливать его в зависимости от того, какой элемент управления отсутствует, а затем вызывает objMissing.Focus()
в конце, но с опцией Strict On компилятор не позволяет опоздать связывание.
Я понимаю, что если элементы управления были одного типа, я мог бы, например, передать отсутствующий объект на TextBox
. Есть ли способ, которым я все еще могу это сделать, используя одну переменную, чтобы сохранить элемент управления для установки фокуса? Или я должен просто установить фокус сразу в каждом из If
s, которые проверяют значение?
Вот пример кода, который я смотрю (txt_ являются TextBox
, cbo_ являются ComboBox
, btn_ являются Button
типов):
Dim objMissing as Object
If txtItemDescription.Text = String.Empty Then
objMissing = txtItemDescription
strMessage = "You must enter an item description."
ElseIf cboProductType.Text = String.Empty Then
objMissing = cboProductType
strMessage = "You must select a product type."
ElseIf cboComponentType.Text = String.Empty And cboComponentType.Enabled Then
objMissing = cboComponentType
strMessage = "You must select a component type."
ElseIf txtOnHand.Text = String.Empty Then
txtOnHand.Text = "0"
ElseIf txtRented.Text = String.Empty Then
txtRented.Text = "0"
ElseIf txtCost.Text = String.Empty Then
txtCost.Text = "0.00"
ElseIf txtFreight.Text = String.Empty Then
txtFreight.Text = "0.00"
ElseIf Len(txtBarcodePrefix.Text) < 6 Then
objMissing = txtBarcodePrefix
strMessage = "You must enter a 6-digit barcode prefix."
ElseIf cboCondition.Text = String.Empty Then
objMissing = cboCondition
strMessage = "You must enter a condition."
ElseIf btnComponents.Enabled And Me.ComponentList.Count = 0 Then
objMissing = btnComponents
strMessage = "You must select the item components."
ElseIf txtSerialNumber.Text <> String.Empty AndAlso txtOnHand.Text <> String.Empty Then
If CInt(txtOnHand.Text) > 1 Then
objMissing = txtOnHand
strMessage = "You cannot have more than 1 item on hand with the same serial number."
End If
End If
If objMissing IsNot Nothing Then
MessageBox.Show(strMessage)
objMissing.Focus()
End If
Это winform, asp.net, wpf? –
Ах, извините, добавил тег winforms. –