【发布时间】:2013-07-31 16:07:17
【问题描述】:
我试图在粘贴到组合框之前删除换行符并用空格替换,因为它会忽略超出行的任何内容。我正在尝试这个:
If e.Modifiers = Keys.Control AndAlso e.KeyValue = Keys.V Then Then
Clipboard.SetText(Regex.Replace(Clipboard.GetText(TextDataFormat.UnicodeText), "\n", " "))
e.Handled = True
End If
我在 KeyDown 事件中执行此操作,但它能够捕获 Ctrl 或 V 但不能同时捕获两者。我尝试了Capture CTRL+V or paste in a textbox in .NET 和http://social.msdn.microsoft.com/Forums/windows/en-US/096540f4-4ad4-4d24-ae12-cfb3e1b246f3/interceptingoverriding-paste-behavior-on-combobox,但没有得到想要的结果。可能我的代码中缺少一些东西。请帮帮我。
我在调试时使用此 Clipboard.GetText().Replace(vbCrLf, " ") 获得所需的值,但我无法设置它。我尝试使用变量来设置它,但即使这样也没有改变。我还尝试清除剪贴板,然后用这个保存修改后的值的变量进行重置。
我正在使用 Winforms,我尝试了这个,但我的剪贴板仍然没有变化:
Private Const WM_PASTE As Integer = &H302
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_PASTE Then
Dim returnText As String = Nothing
If (Clipboard.ContainsText()) Then
returnText = Clipboard.GetText().Replace(vbCrLf, " ")
Clipboard.Clear()
Clipboard.SetText(returnText)
End If
End If
MyBase.WndProc(m)
End Sub
【问题讨论】:
-
你想要这个在 c# 代码还是 vb.net 中?
-
右键单击 -> 粘贴会发生什么?
标签: vb.net combobox keyboard-shortcuts keyboard-events