Quando faccio una ricerca attraverso il mio intero progetto in Visual Studio per la parola 'appunti' non trovo corrispondenze.Il doppio clic sul controllo .NET Label copia il testo negli appunti su Vista +?
Eppure in qualche modo il mio programma sembra cambiare il contenuto dei miei appunti per essere uguale alla proprietà .text di un controllo sul mio modulo. Come può essere?
Ho identificato il gestore dopo il quale il mio blocco appunti sembra sempre essere cambiato e ha aggiunto una messagebox per ottenere il testo dagli appunti per cercare di identificare quando potrebbe essere cambiato.
MessageBox.Show(Clipboard.GetText)
Anche al vertice della gestione dell'evento mia appunti è già stato modificato alla proprietà .text di un controllo sub. Questo è l'unico sotto che gestisce questo evento e gli appunti cambiano sempre dopo questo evento.
Questo è un piccolo progetto di winforms scritto in vb.net.
Maggiori informazioni:
mio clipboard è sempre impostata sulla proprietà .text di un'etichetta quando clicco su di esso. Le etichette sono fatte qui:
For i = 0 To lstTupChildren.Count - 1
Dim lbl As New Label()
lbl.Size = New System.Drawing.Size(250, 25)
lbl.Font = New System.Drawing.Font("Calibri (body)", 10)
lbl.Text = i + 1 & ". " & lstTupChildren(i).Item1
lbl.Location = New System.Drawing.Point(0, 25 * i)
If lstTupChildren(i).Item3 = True Then lbl.BackColor = Color.GreenYellow Else lbl.BackColor = Color.Orange 'sets the colour depending on whether the timesheet is active'
Me.Controls.Add(lbl)
AddHandler lbl.DoubleClick, AddressOf subChangeTimesheetState 'adds handler for double click to change status
'adds handlers for moving the overlay
AddHandler lbl.MouseDown, AddressOf Form_MouseDown
AddHandler lbl.MouseMove, AddressOf Form_MouseMove
'adds handler for hide context menu'
AddHandler lbl.MouseClick, AddressOf subRightClickMenu
Next
anche quando io commento del gestore: AddHandler lbl.DoubleClick, AddressOf subChangeTimesheetState
mia appunti è ancora cambiato.
Aggirare è disponibile qui: lavoro intorno qui: http://www.aspnet-answers.com/microsoft/NET-WinForms-Controls/32231136/double-click-label-and-its-text-appears-on-the-clipboard.aspx
creare una nuova classe che eredita l'etichetta, il codice vb:
Public Class myLabel
Inherits Label
Private WM_GETTEXT As Integer = &HD
Private WM_LBUTTONDBLCLK As Integer = &H203
Private doubleclickflag As Boolean = False
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_LBUTTONDBLCLK Then
doubleclickflag = True
End If
If m.Msg = WM_GETTEXT AndAlso doubleclickflag Then
doubleclickflag = False
Return
End If
MyBase.WndProc(m)
End Sub
End Class
Quindi, se si rimuove il gestore, lo fa non cambia? –
Che tipo di controllo è? Solo una casella di testo o qualcos'altro? –
questa è un'ottima domanda @ZachJohnson – 5uperdan