我有这个带有8个文本框的窗体,需要进行验证。我写了这个休假程序似乎工作正常。然后我打开选项严格,现在它给出错误,我想我不明白。
完整的程序在这里:
Private Sub IsValidMeasurement(sender As Object, e As EventArgs) Handles TxtRoomTwoWidth.Leave, TxtRoomTwoLength.Leave, TxtRoomThreeWidth.Leave, TxtRoomThreeLength.Leave, TxtRoomOneWidth.Leave, TxtRoomOneLength.Leave, TxtHallwayWidth.Leave, TxtHallwayLength.Leave
Dim valid As Boolean = Int32.TryParse(sender.Text, Sentinel)
If valid Then
'Do Nothing, Input was valid.
Else
MessageBox.Show("Please enter a number of inches.")
sender.Text = ""
sender.Focus()
End If
End Sub
错误是当我尝试使用文本框的特征时:sender.Text,sender.focus()。特定错误说选项严格禁止后期绑定。我可以得到一些帮助吗?
答案 0 :(得分:1)
(发件人为对象,e为EventArgs)
使用后期绑定 - 请参阅参考late and early bindnig 所以用简单的话说:
将隐式数据类型转换限制为仅扩展转化次数, 不允许后期绑定,并禁止导致的隐式输入 对象类型
所以在这种特殊情况下"使用严格"不适用于对象 也许您可以将其定义为TextBox?
参考here
答案 1 :(得分:0)
我使用的修复是,我添加的程序中的第一个语句
Dim textbox As TextBox = CType(sender, TextBox) ' explicitly cast sender from object to Textbox.
然后,我没有尝试使用sender.Text或sender.Focus(),而是通过textbox.Text和textbox.Focus()
访问它们。不再有错误。