我有一个文本框,应该包含一个文件名。 该程序必须工作,所以我把:
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
在文本框附近,我放置了一个按钮 (...),该按钮将打开打开文件对话框窗口以选择文件。
问题是,如果文本框为空,则将设置 ErrorProvider1,并且不允许焦点移动到按钮。
所以我想做的是这样的
If destination <> button (...) then
If tbScanFilter.Text.Length = 0 Then
e.Cancel = True
ErrorProvider1.SetError(tbScanFilter, "Filter is required.")
End If
但是我怎么知道哪个是目标控件呢? 我尝试检查按钮的 Enter 事件,但在验证之前没有触发。
知道吗?有什么帮助吗?
与其使用按钮来启动对话框,不如使用文本框本身呢?大致如下:
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
编辑 - 您甚至可以将事件从单击更改为双击,并在文本框下方提供一个小标签,以通知用户单击或双击文本框以启动对话框。