Attualmente sto creando una tastiera su schermo. Sto gestendo il clic del pulsante usando i routedcommands. Il problema è che quando faccio clic sul pulsante nel pannello della tastiera, lo stato attivo passa al pulsante anziché alla casella di testo. Il requisito stabilisce che un cursore debba sempre apparire nella casella di testo per indicare la posizione in cui verrà inserito il prossimo carattere. C'è un modo in cui posso mantenere l'attenzione sulla casella di testo mentre si fa clic sul pulsante.Focus cursore sulla casella di testo in WPF/C#
risposta
Per impostare attivo logico ad un controllo di input
FocusManager.SetFocusedElement(this, textboxJack); // set logical focus
Per impostare stato attivo a un controllo di input
Keyboard.Focus(textboxJill); // set keyboard focus
Per conoscere la differenza tra logica fuoco della tastiera e
Input Overview - Focus su MSDN
Mi piacciono questi do-my-compiti -per-me domande; "il requisito afferma" ... impagabile. Per coloro che trovano questo tramite Google, il trucco per spostare progressivamente il cursore in un TextBox WPF consiste nell'utilizzare la proprietà SelectioNStart.
private void Button_Click(object sender, RoutedEventArgs e)
{
textBox.Focus();
textBox.SelectionStart = textName.Text.Length;
}
Il modo in cui ho risolto questo problema era impostare focusable=false
su tutti i pulsanti/controlli sulla tastiera. In questo modo non perdi il focus del controllo corrente.
Il problema può essere risolto utilizzando un campo di messa a fuoco separato per la "tastiera". Basta applicare la seguente struttura al controllo che contiene tutti i pulsanti e allora saranno in un ambito di messa a fuoco separato e non avrà il focus regolato per quando si fa clic
FocusManager.IsFocusScope="True"
Textbox.Focus();
questo si concentrerà sulla casella di testo
Ottenere il riferimento per il controllo specifico (in tal caso TextBox). Dopo aver fatto clic, in modo Button_Click incollare questo:
Dispatcher.BeginInvoke((ThreadStart)delegate
{
control.Focus();
});
per me, Just Just Just funziona. Grazie... –
ho dovuto usare questo per ottenere il mio risultato desiderato
FocusManager.SetFocusedElement(this, UserNameautoCompleteBox);
Key key = Key.Enter; // Key to send
var target = Keyboard.FocusedElement; // Target element
RoutedEvent routedEvent = Keyboard.KeyDownEvent; // Event to send
target.RaiseEvent(
new KeyEventArgs(
Keyboard.PrimaryDevice,
PresentationSource.FromVisual(UserNameautoCompleteBox),
0,
key) { RoutedEvent = routedEvent }
);
ho voluto fare la stessa cosa, ma nulla sembrava funzionare per me. Avevo davvero bisogno di una risposta che funzionasse puramente in XAML poiché sto lavorando con MVVM.
finalmente ho trovato questo esempio: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/
e modificato a questo:
Nella sezione 'Risorse':
<Style x:Key="FocusTextBox" TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/>
</DataTrigger>
</Style.Triggers>
</Style>
Nella mia definizione della griglia:
<Grid Style="{StaticResource FocusTextBox}" />
- 1. Rimuovi focus sulla prima casella di testo
- 2. Come spostare il cursore di testo sulla destra
- 3. Metodo Lost Focus per la casella di testo asp.net?
- 4. Keyboard.Focus non funziona sulla casella di testo in WPF
- 5. Come disabilitare il cursore nella casella di testo?
- 6. focus to text box
- 7. JQuery Testo predefinito sulla casella di testo vuota
- 8. Come nascondere il cursore lampeggiante della casella di testo?
- 9. Previene il cursore lampeggiante nella casella di testo
- 10. Casella di testo a volte manca il cursore
- 11. come impostare lo stato attivo sulla casella di testo in una finestra di dialogo utilizzando C#
- 12. Aggiungi testo in TinyMce sulla posizione del cursore, onClick sull'icona
- 13. Impostazione del focus di controllo iniziale in Silverlight
- 14. Casella di testo non modificabile in wxPython
- 15. Come impostare il cursore all'interno della casella di testo dopo il caricamento della pagina con jquery
- 16. In Javascript, come si sposta automaticamente il cursore sulla casella di testo successiva quando quella corrente è piena?
- 17. Come assegnare proprietà focus alla casella di testo in Ruby on Rails?
- 18. JQuery si concentra sulla prima casella di testo o area di testo quando la pagina viene caricata
- 19. focus() elemento di input con jQuery, ma il cursore non appare
- 20. Come posizionare il cursore alla fine del testo su una casella di testo mascherata?
- 21. Come cancellare una casella di testo onfocus?
- 22. Scansione codice a barre in una casella di testo specifica
- 23. rilevare la pasta sulla casella di input
- 24. Set focus sul testo in WPF
- 25. Cursore nel mezzo di una casella textarea?
- 26. Come si trova la posizione di un cursore in una casella di testo? C#
- 27. Come mantenere la posizione del cursore sulla modifica del testo dell'area di testo?
- 28. Come forzare una casella e un testo sulla stessa riga?
- 29. Creazione di un controllo casella di testo WPF come casella di testo destinatario email di Outlook
- 30. Come selezionare tutto il testo nella casella di testo quando diventa attivo
Questa non è una domanda "do-my-homework-for-me". È un "Sto facendo i miei compiti, ma sono bloccato, qualcuno può darmi qualche domanda". –