VB :: Lecture & TIPs

[VB.NET] Label 컨트롤 더블 클릭 시 자동 복사 기능 제거하기

안녕하세요! HappyBono 입니다.

VB.NET 이든, C#.NET 이든, .NET 기반 프로그램의 Label 컨트롤을 더블 클릭할 시, 해당 텍스트가 클립보드에 복사됩니다.

이러한 기능을 왜 구현해두었는지는 모르겠지만, 다음과 같은 방법으로 제거할 수 있습니다.

우선, 아래의 코드를 다른 클래스로 인식할 수 있도록 Class 파일에 하나 붙여넣거나, Form 코드 부분 맨 하단의 End Class 아래에 붙여넣습니다.

 

Imports System.ComponentModel

Public Class LabelWithOptionalCopyTextOnDoubleClick
Inherits Label
Private Const WM_LBUTTONDCLICK As Integer = &H203
Private clipboardText As String

Public Property CopyTextOnDoubleClick As Boolean
Protected Overrides Sub OnDoubleClick(e As System.EventArgs)
If Not String.IsNullOrEmpty(clipboardText) Then Clipboard.SetData(DataFormats.Text, clipboardText)
clipboardText = Nothing
MyBase.OnDoubleClick(e)
End Sub

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If Not CopyTextOnDoubleClick Then
If m.Msg = WM_LBUTTONDCLICK Then
Dim d As IDataObject = Clipboard.GetDataObject()
If d.GetDataPresent(DataFormats.Text) Then
clipboardText = d.GetData(DataFormats.Text)
End If
End If
End If
MyBase.WndProc(m)
End Sub
End Class

 

이후, Form 내부에 Label 을 추가하시고, [도구 상자] 에 인식된
LabelWithOptionalCopyTextOnDoubleClick 을 사용하시거나,
코딩 시에 Dim MyLabel As LabelWithOptionalCopyTextOnDoubleClick = New LabelWithOptionalCopyTextOnDoubleClick 과 같이 새로운 Label 을 생성하시어 사용하시면 되겠습니다.

그럼 즐거운 프로그래밍 시간 가지시기를 바랍니다!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s