2016-08-29 2 views
0

Ich habe mehr Pop-ups in meiner WPF-Anwendung, die gut funktionieren.vb.net wpf Popup keinen Fokus

Doch diese letzte ist Fokus oder Eingabe in die Textfelder nicht zu akzeptieren. Und ich verstehe nicht warum.

    <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> 

habe ich versucht, diesen Code Fokus auf sie zu zwingen, aber ohne Erfolg:

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 

Es ist der txtTypeEditor erscheint den Fokus hält auf. Irgendeine Idee, wie man es verwischt?

Ich habe jetzt eine Lösung: Wenn ich die Textbox verschwimmen durch einen anderen textBox Fokussierung dann das Popup den Fokus nimmt.

Wenn der Benutzer jedoch in das Textfeld txtTypeEditor klickt und dann auf ein Eingabefeld im Popup klickt, wechselt der Mausfokus zum Popup, aber der Tastaturfokus bleibt in der Textbox.

Antwort

0

Dies ist nur eine Vermutung: Ist es vielleicht im Zusammenhang mit der txtTypeEditor_keyDown Ereignis bleibt irgendwie im txtTypeEditor? Sie könnten versuchen Sie es mit keyPress statt (wenn es keinen anderen Teil des Codes zu beeinflussen ist)

+0

Ich weiß nicht, wie für STRG + F-Taste zu überprüfen, mit keyPress – Adder

+0

Sie die STRG-Presse über _keydown erfassen könnte und setze im Handler einen bool Wert ctrl = true, dann check in der _keyPress für "F" gedrückt und ctrl = true – DonGru