我有一个应该包含文件名的TextBox。 这项计划的强制性要求,所以我已经提出:
Private Sub tbScanFilter_Validating(sender As Object, e As CancelEventArgs) Handles tbScanFilter.Validating
If tbScanFilter.Text.Length = 0 Then
e.Cancel = True
ErrorProvider1.SetError(tbScanFilter, "Filter is required.")
End If
End Sub
靠近TextBox我已经放了一个按钮(...),它将打开打开的文件对话框窗口来选择文件。
问题是如果TextBox为空,我将设置ErrorProvider1并且不允许焦点移动到按钮。
所以我想做的就是
If destination <> button (...) then
If tbScanFilter.Text.Length = 0 Then
e.Cancel = True
ErrorProvider1.SetError(tbScanFilter, "Filter is required.")
End If
但我怎么知道哪个是目的地控制? 我已经尝试检查按钮的Enter事件,但在验证之前没有被触发。
有什么想法吗?有什么帮助吗?
答案 0 :(得分:0)
为什么不使用TextBox本身而不是使用Button来启动对话框?这些方面的东西:
Private Sub tbScanFilter_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tbScanFilter.Click
Using ofd As New OpenFileDialog
With ofd
'Set any properties here
'.Filter = "*.txt|*.txt"
'.MultiSelect = False
'Etc...
If .ShowDialog() = DialogResult.OK Then
tbScanFilter.Text = .FileName
End If
End With
End Using
End Sub
修改 - 您甚至可以将事件从Click更改为DoubleClick,并在TextBox下方提供一个小标签,以通知用户在TextBox上点击或DoubleClick启动对话框。