我有一个文本框和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上的任何Item,DataGrid也会隐藏。
我的代码有问题吗?
答案 0 :(得分:1)
我不确定问题是什么......您描述的行为与您的代码一致。
行为可能与您期望的不同...... 我认为当 TextBox失去焦点时,DataGrid永远不会有焦点,因为 TextBox没有完成失去焦点。这是问题吗?
如果这是问题,你可以在隐藏DataGrid之前添加某种延迟(当然是以非阻塞的方式)。你可以创建一个新线程,在隐藏控件之前在该线程上执行Sleep(500),看看会发生什么。 您还需要注意,因为只有UI线程可能会更改可见控件,但如果您选择这样做,可以请求进一步的帮助。
我希望它有所帮助。
答案 1 :(得分:0)
当文本框lostfocus甚至被解雇时... 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