У меня есть несколько всплывающих окон в моем приложении WPF, которые отлично работают.vb.net wpf popup no focus
Однако этот последний не принимает фокус или ввод в текстовые поля. И я не понимаю, почему.
<Label x:Name="lblSearch" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5" Height="30" Width="Auto">Search</Label>
<TextBox Name="txtSearch" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5" Height="30" Width="200" IsReadOnly="False" IsEnabled="True"></TextBox>
<Button Name="btnSearch" Grid.Row="0" Grid.Column="2" Style="{StaticResource ButtonSmall}" Template="{DynamicResource BlackButton}" Margin="5">Search</Button>
<Label x:Name="lblReplace" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5" Height="30" Width="Auto">Replace</Label>
<TextBox Name="txtReplace" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5" Height="30" Width="200" IsReadOnly="False" IsEnabled="True"></TextBox>
<Button Name="btnReplace" Grid.Row="1" Grid.Column="2" Style="{StaticResource ButtonSmall}" Template="{DynamicResource BlackButton}" Margin="5">Replace</Button>
<Button Name="btnStopSearch" Grid.Row="2" Grid.Column="3" Style="{StaticResource ButtonSmall}" Template="{DynamicResource BlackButton}" Margin="5">Done</Button>
<DockPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
</DockPanel>
</local:GridEx>
</DockPanel>
</Border>
</Border>
</Popup>
Я попробовал этот код, чтобы заставить сосредоточиться на ней, но безрезультатно:
Private searchWhere As String = Nothing
Private Sub txtTypeEditor_keyDown(sender As Object, e As Forms.KeyEventArgs) Handles txtTypeEditor.KeyDown
If e.KeyCode = Forms.Keys.F AndAlso e.Control AndAlso Not e.Alt AndAlso Not e.Shift Then
PopupSearch.IsOpen = True
txtSearch.Focus()
Keyboard.Focus(txtSearch)
searchWhere = "TypeEditor"
e.Handled = True
End If
End Sub
Private Sub Popup1_Opened(sender As Object, e As EventArgs) Handles PopupSearch.Opened
txtSearch.Focus()
Keyboard.Focus(txtSearch)
End Sub
Похоже txtTypeEditor держит на фокус. Любая идея, как размыть его?
У меня есть обходное решение: если я размываю текстовое поле, фокусируясь на другом текстовом поле, тогда всплывающее окно принимает фокус.
Однако, если пользователь нажимает текстовое поле txtTypeEditor и затем нажимает поле ввода во всплывающем окне, фокус мыши переключается на всплывающее окно, но фокус клавиатуры остается с текстовым полем.
Я не знаю, как проверить CTRL-F ключ с Keypress – Adder
вы могли бы захватить нажмите CTRL через _keydown и установите в обработчике значение bool ctrl = true, затем запустите _keyPress для «F» и нажмите ctrl = true – DonGru