Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    62

    [VB.Net] KeyPreview e pbm con le TextBox

    Ciao a tutti, ho il seguente problema: nella form principale del mio programma ho abilitato la KeyPreview per intercettare e gestire nella procedura di evento "Private Sub Form1_KeyPress(...)" la pressione di alcuni tasti (per inciso: solo quelli corrispondenti alle lettere dell'alfabeto).
    Il problema è che non voglio che la Form1_KeyPress entri in azione se sto lavorando sulle TextBox della Form (ce ne sono due: TextBox1 e TextBox2)
    Purtroppo se uso la seguente sintassi:
    If TextBox1.Focus = False Then
    'istruzioni....
    'istruzioni....
    End If
    (per condizionare il codice nella Form1_KeyPress) anzichè testare lo stato della TextBox1 le assegno il focus!!!! (provare per credere) Come faccio a comunicare a Visual Basic l'esigenza di capire qual'è il controllo attivo???
    Potete aiutarmi?
    Grazie!
    Baci!
    Caty

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Ciò che non è chiaro e può essere determinante per la risposta è... cosa ci fai con il KeyPreview sul Form?

    Quali sono i tasti che provvedi ad intercettare a livello di Form? E perchè?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    62
    In realtà nel mio form ci sono, tra gli altri, 26 piccoli button con Text uguale alle 26 lettere dell'alfabeto (Button1="A" ; Button2="B" ; .......Button26="Z" ; ).
    ORA, NON RIUSCENDO AD ASSOCIARE LA LETTERA AL TASTO (SI PUO' FARE IN VISUAL BASIC .NET???) HO CREATO 26 SUB DIVERSE CHE INTENDEVO RICHIAMARE SIA DALL' ONCLICK DEL BUTTON CHE COME TASTO INTERCETTATO con la keypreview (AD ESEMPIO CLICCANDO SUL BUTTON CON TESTO "B" O DIGITANDO LA LETTERA "B" DOVREBBE PARTIRE LA SUB "scelta_B()" ).
    PURTROPPO LA PRESENZA DELLE DUE TEXTBOX ENTRA IN CONFLITTO CON LA KEYPREVIEW QUANDO UNA DELLE DUE TEXTBOX E' ATTIVA.
    Adesso il pbm è più chiaro?
    Si può risolvere?
    E cmq, indipendentemente dal mio pbm specifico: possibile che in VB.Net non ci sia una funzione / metodo che restituisca il nome del controllo attivo?
    Fatemi sapere! HELP!!!!
    CIAO!
    Catia

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    puoi fare un evento unico a cui si agganciano tutti i bottoni e poi dall'oggetto sender leggi il nome del bottone che ha scatenato quell'evento.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    62
    OK, NON CI SIAMO (e lo sconforto è totale)...
    Riepiloghiamo:
    fondamentalmente avevo bisogno di sapere
    1) in VB.Net è possibile associare un tasto ad un pulsante ???
    2) in VB.Net è possibile determinare, in una subroutine, qual'è il controllo della form che ha il focus in quel momento?
    *************
    MISTERO
    *************

    e cmq: , ho provato ad intepretare -senza successo- i vs consigli.
    Come faccio a fare in modo che (ad es.) alla pressione della lettera "C" parta la procedura di evento associata all'on_click del pulsante "Button_c" ???

    Cmq grazie!!!
    Catia
    (forumista pacifista)
    PS: Cassano, fuoriclasse in terra straniera, TI VOGLIAMO PROTAGONISTA AI MONDIALI!

  6. #6
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    codice:
    1) in VB.Net è possibile associare un tasto ad un pulsante ???

    1) che vuol dire ??? forse tasto della tastiera con pulsante ??

    se cosi devi fare una routine generica che accetta tutte le chiamate dei bottoni che sono stati premuti sulla tastiera...poi fai un cast dell'oggetto sender(che è il controllo che ha scatenato l'evento) al bottone voluto e poi fai tutto quello che vuoi.

    o colleghi la routine con addhandler ,oppure con gli handles a in coda al nome della sub.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    62
    Ciao Cassano, purtroppo non sono una fuoriclasse della prg.ne (sono alle prime armi)
    Mi puoi aiutare?
    Nella form ho tante sub di questo tipo

    Private Sub Button1_Click(ByVal sender etc etc ...........
    'corrisponde alla lettera "A"
    'istruzioni successive OPPURE (DEVO ANCORA DECIDERE) chiamata ad un'unica SUB tasto("A")
    End Sub

    Private Sub Button2_Click(ByVal sender etc etc ...........
    'corrisponde alla lettera "B"
    'istruzioni successive OPPURE (DEVO ANCORA DECIDERE) chiamata ad un'unica SUB tasto("B")
    End Sub

    ''' ETC ETC ETC ETC ETC ETC ETC ETC

    Private Sub Button26_Click(ByVal sender etc etc ...........
    'corrisponde alla lettera "Z"
    'istruzioni successive OPPURE (DEVO ANCORA DECIDERE) chiamata ad un'unica SUB tasto("Z")
    End Sub

    Seguendo il tuo consiglio dovrei creare innanzitutto una sub "intercetta_tasto_premuto()" che DOVREBBE ANALIZZARE IL TASTO PREMUTO A LIVELLO DI FORM E SE CORRISPONDE AD UNA DELLE 26 LETTERE DELL'ALFABETO DOVREBBE RICHIAMARE tasto(Chr(tasto premuto)) .

    ADESSO LA DOMANDA E':
    - Che vuol dire "collegare la SUB con addhandler oppure con gli handles a in coda al nome della sub"?
    - Come faccio a fare il Cast per capire quale ogggetto ha scatenato l'evento?
    - E questo risolve il problema che avevo in origine, vale a dire impedire che vengano intercettati i tasti se il controllo attivo eè una delle due TextBox?



    Ciauz
    Catia

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    vai qui e capirai tutto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.