![](/img/trans.png)
[英]Is it possible to paste Excel / CSV data from clipboard to DataGridView in 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.