验证目的地功能的控制

时间:2018-01-05 19:25:52

标签: wpf vb.net validation events validating-event

我有一个应该包含文件名的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事件,但在验证之前没有被触发。

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

1 个答案:

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