DoubleClick label to Clipboard

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

Post Reply
ntluyen
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Thu 02/12/2010 4:42 pm
Has thanked: 2 times

DoubleClick label to Clipboard

Post by ntluyen »

Chào các bác, Xin các bác chỉ giúp mình vấn đề này với
- Minh dùng VB.Net 2010
- Khi tạo trên form một Label
- Khi mà DoubleClick vào cái label này thì nó tự động copy cái nội dung của label ấy vào clipboard,
- Làm cách nào để bỏ nó đi

Thank
Attachments
DoubleClick label to Clipboard.rar
(68.46 KiB) Downloaded 217 times
User avatar
1045007
Thành viên danh dự
Thành viên danh dự
Posts: 551
Joined: Mon 09/06/2008 3:35 pm
Location: TP Cần Thơ
Has thanked: 2 times
Been thanked: 61 times
Contact:

Re: DoubleClick label to Clipboard

Post by 1045007 »

Đây là đặt trưng từ window Vista chứ không phải do code hay control trong VS
Để loại bỏ bạn thừa kế lớp Lable rồi Overrides WndProc như sau:
  1. Public Class LabelDoubleClickNonCopyToClipboard
  2.     Inherits Label
  3.     Private WM_GETTEXT As Integer = &HD
  4.     Private WM_LBUTTONDBLCLK As Integer = &H203
  5.     Private doubleclickflag As Boolean = False
  6.     Protected Overrides Sub WndProc(ByRef m As Message)
  7.         If m.Msg = WM_LBUTTONDBLCLK Then
  8.             doubleclickflag = True
  9.         End If
  10.         If m.Msg = WM_GETTEXT AndAlso doubleclickflag Then
  11.             doubleclickflag = False
  12.             Return
  13.         End If
  14.         MyBase.WndProc(m)
  15.     End Sub
  16. End Class


-- Biên dịch

Sau đó sử dụng control LabelDoubleClickNonCopyToClipboard vừa tạo ra!
Xếp hình cổ điển for Android-https://play.google.com
♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀
ntluyen
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Thu 02/12/2010 4:42 pm
Has thanked: 2 times

Re: DoubleClick label to Clipboard

Post by ntluyen »

Cám ơn bạn đã trả lời nhưng còn 1 vấn đề nữa là trước khi dlclick vào label trong clipboard đã có data, sau khi dlclick thì clipboard cung mất luôn
Có cách nào khác để khắc phục không ah?
User avatar
1045007
Thành viên danh dự
Thành viên danh dự
Posts: 551
Joined: Mon 09/06/2008 3:35 pm
Location: TP Cần Thơ
Has thanked: 2 times
Been thanked: 61 times
Contact:

Re: DoubleClick label to Clipboard

Post by 1045007 »

Bạn sửa lại như sau
  1. 'Imports System.ComponentModel
  2.  
  3.     Private Const WM_LBUTTONDCLICK As Integer = &H203
  4.     Private str As String
  5.     <DefaultValue(False)> <Description("~")> _
  6.     Public Property flag As Boolean
  7.     Protected Overrides Sub OnDoubleClick(ByVal e As System.EventArgs)
  8.         If Not String.IsNullOrEmpty(str) Then
  9.             Clipboard.SetData(DataFormats.Text, str)
  10.         End If
  11.         str = Nothing
  12.         MyBase.OnDoubleClick(e)
  13.     End Sub
  14.  
  15.     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
  16.         If Not flag Then
  17.             If m.Msg = WM_LBUTTONDCLICK Then
  18.                 Dim obj As IDataObject = Clipboard.GetDataObject()
  19.                 If obj.GetDataPresent(DataFormats.Text) Then
  20.                     str = obj.GetData(DataFormats.Text)
  21.                 End If
  22.             End If
  23.         End If
  24.         MyBase.WndProc(m)
  25.     End Sub
Xếp hình cổ điển for Android-https://play.google.com
♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀
Post Reply

Return to “Visual Basic .NET và C# (VB.NET & C#)”