0

我有一个应该包含文件名的文本框。该程序必须运行,所以我放了:

    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 为空,则会设置 ErrorProvider1 并且不允许焦点移动到按钮。

所以我想做的是

If destination <> button (...) then
        If tbScanFilter.Text.Length = 0 Then
            e.Cancel = True
            ErrorProvider1.SetError(tbScanFilter, "Filter is required.")
        End If

但是我怎么知道哪个是目标控件呢?我试图检查按钮的 Enter 事件,但在验证之前没有被触发。

任何想法?有什么帮助吗?

4

1 回答 1

0

与其使用 Button 来启动对话框,不如使用 TextBox 本身?这些方面的东西:

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 以启动对话框。

于 2018-01-05T20:09:21.147 回答