繁体   English   中英

从ToolStripTextBox(C#)中的剪贴板检测粘贴

[英]Detecting paste from clipboard in ToolStripTextBox (C#)

我需要检测用户是否将剪贴板中的文本粘贴到ToolStripTextBox中。 因此,我创建了一个自ToolStripTextBox继承的自定义控件。 然后,我想重写WndProc以捕获WM_PASTE消息,但是我注意到没有WndProc可以重写。 对于标准TextBox,描述的方法可以正常工作。

有什么建议怎么做才能从ToolStripTextBox上的剪贴板中检测粘贴?

ToolStripTextBox WndProc似乎遥不可及。 我出于好奇心进行了搜索并找到了答案-https: //stackoverflow.com/a/4688745/168719

如果不选择使用ToolStripControlHost ,则对于需要自定义处理WndProc的方案,还有其他聪明的解决方案:

http://bytes.com/topic/c-sharp/answers/279168-toolstriptextbox-右键单击

尼古拉斯·帕迪诺[.NET / C#MVP]

我只是注意到了。 为了解决这个问题,您可以通过调用TextBox属性来获取托管的TextBox。 然后,您应该能够创建一个从NativeWindow派生的类,该类重写WndProc方法以忽略上下文菜单消息[或显然是拦截WM_PASTE ...]当您获取textbox属性,获取该句柄并分配该句柄到重写的NativeWindow类。

如果您使用的是Windows [Windows窗体/ WPF],则可以使用剪贴板检测数据。

if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
            {

            richTextBox1.Paste();
            MessageBox.Show("You have data in clipboard")

            }

(已编辑以包括WPF)

ToolStripTextBox是一个包含标准文本框的主机控件,您需要按照说明进行操作,但是用文本框替换ToolStripTextBox.TextBox,不幸的是,这是一个只读属性。

因此,您需要从ToolStripControlHost派生MyToolStripTextBox才能更改其托管的控件的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM