Kiedy przeszukuję cały mój projekt w visual studio pod kątem słowa "schowek", nie znajduję żadnych dopasowań.Dwukrotne kliknięcie formantu .NET Label kopiuje swój tekst do schowka w systemie Vista +?
Jednak jakoś mój program wydaje się zmieniać zawartość mojego schowka, aby była równa właściwości .text formantu w moim formularzu. Jak to może być?
Zidentyfikowałem handler, po którym mój schowek zawsze wydaje się być zmieniony i dodano skrzynkę wiadomości, aby pobrać tekst z mojego schowka, aby spróbować określić, kiedy może on ulec zmianie.
MessageBox.Show(Clipboard.GetText)
Nawet w górnej części podrzędnej obsługi zdarzenia mój schowek został już zmieniony na właściwość .text formantu. Jest to jedyny sub, który obsługuje to zdarzenie, a schowek zawsze zmienia się po tym wydarzeniu.
To jest mały projekt WinForm napisany w vb.net.
Więcej informacji:
Mój schowek jest uzyskiwanie ustawione na posesji .text etykiety po kliknięciu na nim. Etykiety wykonane są tutaj:
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
nawet kiedy zakomentuj Handler: AddHandler lbl.DoubleClick, AddressOf subChangeTimesheetState
mój schowek jest ciągle zmieniane.
obejścia jest dostępny tutaj: obejść tutaj: http://www.aspnet-answers.com/microsoft/NET-WinForms-Controls/32231136/double-click-label-and-its-text-appears-on-the-clipboard.aspx
utworzyć nową klasę, która dziedziczy etykiecie kodu VB:
Klasa publiczna 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
Więc jeśli usunąć obsługi, nie zmieni? –
Jaki to rodzaj kontroli? Tylko pole tekstowe lub coś innego? –
To jest doskonałe pytanie @ZachJohnson – 5uperdan