0

我有一个文本框和 DataGrid

虽然文本框失去焦点,如果 DataGrid 没有聚焦,那么我想隐藏 DataGrid。

我使用下面的代码。

Private Sub txt_LostFocus(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles txt.LostFocus

    If DataGrid1.IsFocused = False Then
        DataGrid1.Visibility = Windows.Visibility.Hidden
    End If

End Sub

即使我单击 DataGrid 上隐藏的 DataGrid 上的任何项目,也使用此代码。

我的代码有问题吗?

4

2 回答 2

1

我不确定问题是什么......您描述的行为与您的代码一致。

行为可能与您所期望的不同......我认为当TextBox 失去焦点时, DataGrid 将永远不会有焦点,因为TextBox 没有完成失去焦点。那是问题吗?

如果这是问题所在,您可以在隐藏 DataGrid 之前添加某种延迟(当然是以非阻塞方式)。您可以创建一个新线程,在隐藏控件之前在该线程上执行 Sleep(500),然后看看会发生什么。您还需要小心,因为只有 UI 线程可能会更改可见控件,但如果您选择这样做,您可能会寻求进一步的帮助。

我希望它有所帮助。

于 2013-05-30T22:21:31.490 回答
0

当文本框失去焦点甚至被触发时.. gridview 还没有聚焦..

所以,添加这样的东西

Dim lDGVFocused as Boolean

Private Sub Datagrid1_Enter( ... ) ...

  lDGVFocused = True

End Sub

Private Sub Datagrid1_LostFocus( ... ) ...

  lDGVFocused = False

End Sub

Private Sub txt_LostFocus( ... ) ...

    If not lDGVFocused then DataGrid1.Visible = False

End Sub

Private Sub txt_GotFocus( ... ) ...

   DataGrid1.Visible = True

End Sub
于 2013-05-31T09:27:56.580 回答