Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Mini form con textbox, sempre in focus
Forum - C# / VB.NET - Mini form con textbox, sempre in focus

Avatar
uelfox (Normal User)
Rookie


Messaggi: 32
Iscritto: 25/01/2010

Segnala al moderatore
Postato alle 17:16
Mercoledì, 19/03/2014
Buongiorno a tutti,
sto cercando di documentarmi per la realizzazione di un piccolo form che contiene un textbox.
Esso dovrebbe essere sempre sul desktop, e con il cursore lampeggiante, per poter sempre ricevere quello che viene battuto sulla tastiera, anche se apro altre finestre.
Come potrei risolvere?
Avete qualche soluzione?

Grazie

S.O. win7
linguaggio c#

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:52
Mercoledì, 19/03/2014
Non ho capito una questione ... tu apri Word e scrivi un documento e quello che scrivi deve andare nel tuo textbox??


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
uelfox (Normal User)
Rookie


Messaggi: 32
Iscritto: 25/01/2010

Segnala al moderatore
Postato alle 22:31
Mercoledì, 19/03/2014
L'applicativo che voglio sviluppare, girerà su una macchina che non utilizzerà programmi di scrittura, ne mouse.
Ho bisogno che xò tutto quello che scrivo, vada sempre nel textbox.
Quindi il cursore deve essere sempre lampeggiante nel textbox, per poter ricevere l'input del testo.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:10
Giovedì, 20/03/2014
Se imponi il focus sempre nella textbox il testo sarà sempre nella textbox.

Se ti spieghi meglio, con TUTTI i dettagli, forse si capisce ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 11:36
Giovedì, 20/03/2014
Potresti seguire la filosofia di un Keylogger e rilevare da background i tasti premuti per poi scriverli. Poi magari a certi tasti come Backspace cancellare manualmente il testo.
Se proprio ti vuoi ingegnare potresti mettere il focus solo quando vengono premute le frecce direzionali per scorrere tra il testo.


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote
Avatar
uelfox (Normal User)
Rookie


Messaggi: 32
Iscritto: 25/01/2010

Segnala al moderatore
Postato alle 17:05
Domenica, 30/03/2014
Testo quotato

Postato originariamente da nessuno:
Se ti spieghi meglio, con TUTTI i dettagli, forse si capisce ...
  


E' vero, vediamo se così la situazione è più chiara:
Ho la myapp1 che gira per conto suo ed è progettata per essere utilizzata su monitor touch, perchè non prevede tastiera.
Sulla stessa macchina, ho installato "dragon naturally speaking" programma di riconoscimento vocale, che può scrivere in qualunche textbox dove viene puntato il cursore.
Io vorrei creare una form con al suo interno una textbox, dove ho il cursore sempre con il focus, così se pronuncio qualunque parola, dragon me la riporta dentro alla textbox, così poi io la possa elaborare per interagire con la myapp1.
Come posso ottenere questo?
Ri..grazie

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 0:30
Lunedì, 31/03/2014
Potresti intercettare l'evento del click del mouse (che dovrebbe essere richiamato anche in un evento touch), e dopo il click richiamare l'istruzione. All'inizio avevo provato qualche esperimento, tuttavia l'intercettazione dell'evento click avviene prima che la sua esecuzione finisca.: Se per esempio fai click in una finestra, scatta l'evento nel tuo programma (su cui si imposta il focus), tuttavia l'evento del click che finisce è sulla finestra. Quindi ho usato un altro metodo, un semplice timer che verifica l'unfocus e imposta il focus.

Ciò non avrà un effetto perfettamente confortevole con Windows però se ti dedichi abbastanza può dare un buon risultato

1. Per fare questo crea un oggetto Timer nel form.
2. Fai doppio click sull'oggetto Timer per inserire l'evento Tick automaticamente
3. Inserisci questo codice in Form_Load
Codice sorgente - presumibilmente C# / VB.NET

  1. timer1.Interval = 500; // Default 100, più è veloce (basso) questo intervallo, più l'autofocus sul form sarà veloce, ma allo stesso tempo il click perde efficacia
  2. timer1.Start();


4. Inserisci questo nell'evento timer1_Tick
Codice sorgente - presumibilmente C# / VB.NET

  1. private void timer1_Tick(object sender, EventArgs e)
  2.         {
  3.             if (!this.Focused)
  4.             {
  5.                 if(this.WindowState != FormWindowState.Normal) this.WindowState = FormWindowState.Normal;
  6.                 this.Activate();
  7.                 textBox1.Focus();
  8.             }
  9.         }



Molti potrebbero dire che questo è un utilizzo improprio di un timer, ed effettivamente lo è, tuttavia fa quello che vuoi. Non so come si comporti su un computer touch, tuttavia l'intromissione del timer nell'evento click ti vanifica certe azioni, ed è il motivo per cui ho messo Interval a 500 ms. Se lo metti più in alto potrebbe essere altresì scomodo aspettare troppo per il focus.
Dimmi se fa al caso tuo.


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote