Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET 2005]Intercettare il click destro del mouse e bloccarlo

    Salve...ho cercato sul forum ma a parte suggerimenti per l'evento, non ho trovato niente...

    non riesco a intereccate se ho premuto il bottone destro o sinistro del mouse su di una textbox

    ho provato a farmi restituire, sull'evento mouse_Click

    msgbox (e.button)

    ma mi da due numeri strani diversi a seconda che prema il destro o il sinistro

    Questi due numeri sono univoci per i due pulsanti ??? e sono validi per qualcunque mouse ? se è questo il modo di intercattarli mi sembra un po poco intuitivo

    Secondariamente....come posso bloccare tutto quello che viene dopo la pressione del tasto destro del mouse, ossia la compara del menu COPIA, INCOLLA ecc.ecc. ???

    Grazie mille
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  2. #2
    ho trovato il metodo per intercettare il click del tasto destro

    codice:
    Private Sub txtIDOrdineAperto_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtIDOrdineAperto.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
    
            End If
        End Sub
    ma non riesco a capire come annullarne la pressione (o l'effetto)
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  3. #3
    nessuno mi sa dire come bloccare l'azione di cui sopra ?

    Sostanzialmente mi serve per evitare che tramite il click col tasto destro si abbia accesso alla voce INCOLLA, che vanificherebbe l'annullamento di dati da tastiera
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  4. #4

    Re: [VB.NET 2005]Intercettare il click destro del mouse e bloccarlo

    Originariamente inviato da RAVALON
    Questi due numeri sono univoci per i due pulsanti ??? e sono validi per qualcunque mouse ? se è questo il modo di intercattarli mi sembra un po poco intuitivo
    Se tu avessi letto la documentazione avresti saputo che la proprietà di sola lettura MouseEventArgs.Button è di tipo MouseButtons, un enum che contiene i valori Left, Middle, None, Right, XButton1, XButton2. A questo punto per capire che pulsante è stato premuto ti basta confrontare il valore e.Button con il valore che ti interessa dell'enum:
    codice:
    If e.Button = MouseButtons.Right Then
        'fa quello che deve fare
    End If
    .
    L'annullamento del click di destro è possibile solo effettuando il subclassing della finestra-pulsante. In pratica devi derivare una tua classe personalizzata da System.Windows.Forms.TextBox ed effettuare l'override di WndProc in modo da bloccare i click di destro (ulteriori info su richiesta ).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    non per riprendere il tuo tono eh....ma se tu avessi letto il mio secondo intervento avresti visto che ho usato proprio quel confronto nel codice....quindi la prima domanda era ormai obsoleta(lo so che ormai l'avevo fatta ma ho trovato dopo la soluzione)

    ok...grazie per la dritta ma non so fare una cosa del genere....se vorrai darmi qualche info te ne sarei riconoscente, altrimenti grazie lo stesso per avere perso tempo a rispondermi
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  6. #6
    Originariamente inviato da RAVALON
    non per riprendere il tuo tono eh....ma se tu avessi letto il mio secondo intervento avresti visto che ho usato proprio quel confronto nel codice....quindi la prima domanda era ormai obsoleta(lo so che ormai l'avevo fatta ma ho trovato dopo la soluzione)
    Quando ho cliccato su "Rispondi" non avevi ancora postato... chiedo venia.
    ok...grazie per la dritta ma non so fare una cosa del genere....se vorrai darmi qualche info te ne sarei riconoscente, altrimenti grazie lo stesso per avere perso tempo a rispondermi
    Domani ti posto il codice...
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    ok grazie
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  8. #8
    Aggiungi al tuo progetto una nuova classe (chiamandola, ad esempio, TextBoxNoPaste); quindi inseriscici come codice:
    codice:
    Public Class TextBoxNoPaste
        Inherits TextBox
    
        Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
            Const WM_CONTEXTMENU As Integer = &H7B
            Const WM_PASTE As Integer = &H302
            If Not (m.Msg = WM_CONTEXTMENU Or m.Msg = WM_PASTE) Then
                MyBase.WndProc(m)
            End If
        End Sub
    End Class
    .
    Aggiungi al tuo form le varie caselle di testo, quindi, nel codice del form, vai nella region "Codice generato da Progettazione Windows Forms" (qui mi riferisco a VB.NET 2003, mi pare in VB2005 sia leggermente differente); cerca del codice tipo questo:
    codice:
    Friend WithEvents <nometextbox> As System.Windows.Forms.TextBox
    e modificalo in
    codice:
    Friend WithEvents <nometextbox> As TextBoxNoPaste
    (ripeti tale manovra per tutte le textbox in cui vuoi evitare che l'utente incolli del testo); poco sotto ci dovrebbe essere la sub InitalizeComponents; modifica
    codice:
    Me.<nometextbox> = New System.Windows.Forms.TextBox
    in
    codice:
    Me.<nometextbox> = New TextBox_NoMenu
    ; anche qui, ripeti tale manovra per tutte le textbox in cui vuoi evitare che l'utente incolli del testo.
    A questo punto per l'utente non dovrebbe essere più possibile far apparire il menu contestuale e incollare (neanche con CTRL+V) nelle TextBox per cui hai effettuato le modifiche.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Grandissimo.....
    ti ringrazio molto !!!
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  10. #10
    Non c'è di che, ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

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.