Quando eseguo un'applicazione WinForms (o Delphi, vedere alla fine) su Windows 10 in un tablet mode, una tastiera touch non viene visualizzata automaticamente quando una casella di input è focalizzata .Apre automaticamente la tastiera touch del tablet sullo stato di input di WinForms
Credo che ciò dovrebbe avvenire automaticamente, senza alcun codice aggiuntivo/configurazione.
Per un test, ho la più semplice applicazione WinForms desktop di VS 2015, con un unico TextBox
control.
E 'semplicemente il default Applicazione Windows Form C# progetto creato da Visual Studio. Nessun codice aggiunto, nessuna proprietà modificata. Proprio il TextBox
è stato aggiunto, facendo cadere dal Toolbox (di nuovo immobili cambiato):
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox1.Location = new System.Drawing.Point(64, 27);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.TabIndex = 0;
per verificare la mia ipotesi che il pop-up dovrebbe essere automatico:
Ho provato a eseguire la versione di Windows XP di
notepad.exe
su Windows 10. Viene automaticamente visualizzata la tastiera touch. Dubito che Windows XP abbia un supporto esplicito per le tastiere touch.Ho anche provato alcune antiche applicazioni MFC (ad esempio FileZilla 2.2.15 dal 2005). Si apre anche la tastiera touch su tutte le sue caselle di input. Ancora una volta, sono abbastanza sicuro, l'MFC non ha alcun supporto esplicito per le tastiere touch.
Lo stesso per le applicazioni basate su wxWidgets (ad esempio FileZilla 3.x).
sembra che ci sia qualcosa di rotto in WinForms che impedisce il popup automatico. È interessante notare che i pop-up automatici opere:
- per (modificabile) caselle combinate (
ComboBox
conDropDownStyle = DropDown
) - per le caselle di testo in una modalità password (
TextBox.PasswordChar
) - per le caselle di testo RTF (
RichTextBox
) - quando la casella di input è attiva nel momento in cui la tastiera hardware viene "rimossa" (lo faccio sfogliando lo schermo sul notebook Lenovo Yoga), ma mai dopo.
Ho visto tutti i suggerimenti circa un popup esplicito eseguendo il TabTip.exe
. Per esempio.:
- How to Use Windows On Screen Keyboard in C# WinForms
- Open and close Windows 8 touch keyboard tabtip under desktop
- How do I close the on-screen keyboard process from C# winform correctly?
- Keyboard Winforms on Windows 10 (surface)
La maggior parte delle "soluzioni" offrono un codice come questo:
var progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
var keyboardPath = Path.Combine(progFiles, "TabTip.exe");
this.keyboardProc = Process.Start(keyboardPath);
B Non posso credere che questo potrebbe essere il modo "ufficiale". Se non altro, allora perché non esiste un modo pulito per nascondere la tastiera aperta eseguendo il TabTip.exe
(le soluzioni includono hack come uccidere il processo o inviare chiave Esc).
E in realtà quanto sopra mod non sembra funzionare più in Windows Update 10 ° Anniversario:
interessante, vedo lo stesso comportamento con Delphi/C++ Builder/Applicazioni VCL. La tastiera non si apre per le caselle di modifica (TEdit
). Viene visualizzato per le caselle combinate (TComboBox
) e per le caselle di modifica in modalità password (PasswordChar
). È interessante notare che non è per TRichEdit
, che cosa è notevole differenza per .NET RichTextBox
, che forse vale la pena indagare.
Questa domanda (senza risposta) descrive un comportamento identico:
Application written Delphi XE8 touch in edit boxes keyboard not appear in Windows 10.
Hai provato con 2 caselle di testo e modificando la messa a fuoco? Ho avuto qualcosa di simile una volta quando c'era una casella di input che si è concentrata all'avvio. In qualche modo questo evento è mancato a "OS (?)". Risolto il problema impostando lo stato iniziale su un altro controllo. – Stefan
@Stefan Sicuro. In realtà ho bisogno di questo per una grande applicazione. Ho appena ridotto il problema alla semplice applicazione di test solo a scopo di questa domanda. –
Quale dispositivo stai utilizzando? Windows 10 ha alcune euristiche interne per decidere se la tastiera deve effettivamente mostrare o meno, in base a una serie di cose. La modalità Tablet non è sufficiente per "forzare" la tastiera a mostrare. Sul mio Surface Book, devo staccare fisicamente la tastiera affinché l'OSK si mostri automaticamente (o essere forzato usando trucchi e soluzioni alternative) – o0rebelious0o