相关疑难解决方法(0)

无法转义空文本框

我正在尝试追踪最近从VS2003升级到VS2008的应用程序中令人讨厌的界面错误的原因(错误在迁移前不存在).这是怎么回事:

1)用户在包含日期的文本框中单击.
2)用户清除日期
3)用户尝试移动到另一个字段,但不能.没有出现错误消息 - 就像验证失败一样.

更多信息:

1)文本框的Text属性绑定到使用数据表作为其源的数据视图.绑定字段是可空的日期时间字段,没有约束或默认值.
2)Validating事件触发,CancelEventArgs属性未设置为Cancel.验证,LostFocus和Leave事件都会激活,进入LostFocus> Leave> Validating
3)除了几个例外,我看不到任何与控件或数据源相关的代码更改.首先是这个:

Me.txtRangeEnd.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.dvClientNos, "RangeEnd"))
Run Code Online (Sandbox Code Playgroud)

现在改为:

Me.txtRangeEnd.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.dvClientNos, "RangeEnd", True))
Run Code Online (Sandbox Code Playgroud)

第二是这个:

Me.dcolRangeEnd.DataType = GetType(System.DateTime)
Run Code Online (Sandbox Code Playgroud)

现在改为:

Me.dcolRangeEnd.DataType = GetType(Date)
Run Code Online (Sandbox Code Playgroud)

还有这个,从第一天开始就在代码中:

AddHandler txtRangeEnd.DataBindings("Text").Format, AddressOf FormatBoxToDate

Private Sub FormatBoxToDate(ByVal sender As Object, ByVal e As ConvertEventArgs)
Try
    If Not e.Value Is DBNull.Value Then
            e.Value = Format(e.Value, "d")
        End If
    End Try
End Sub
Run Code Online (Sandbox Code Playgroud)

现在,如果我从添加数据绑定中删除",True",那么我可以使用空值退出控件,但它会恢复为原始值.删除日期格式似乎没有区别(它只是显示06/01/2011 00:00:00而不是所需的06/01/2010).根本没有其他代码引用该文本框.我认为VS2003和VS2008之间的数据绑定控件的验证必定会有所改变,但是我很可能会错过一些令人头脑麻木的东西.

有任何想法吗?

vb.net migration user-interface textbox visual-studio-2008

9
推荐指数
1
解决办法
8572
查看次数