我试图将从剪贴板收集的数据粘贴到文本框(C#)
中在这种情况下,我将一些东西复制到剪贴板
Clipboard.SetText("Hello, clipboard");
如何在剪贴板具有某些功能的情况下(或当用户执行ctrl + c时)在文本框中执行复制事件时,我该怎么做?
我尝试过这段代码;我的文本框是tbData:
private void tbData_TextChanged(object sender, EventArgs e)
{
if (Clipboard.ContainsText(TextDataFormat.Text))
{
tbData.Text = Clipboard.GetText();
Clipboard.Clear();
}
}
但我得到了这个例外:
请求的剪贴板操作未成功
答案 0 :(得分:1)
您必须为剪贴板更新事件连接事件处理程序。但这需要使用P / Invoke到DllImport(“user32.dll”)来获取事件。请参阅此文http://www.fluxbytes.com/csharp/how-to-monitor-for-clipboard-changes-using-addclipboardformatlistener/
然后你可以这样做.....
//register clipboard change
YourAppName.ClipboardUpdate += new EventHandler(ClipboardChanged);
private void ClipboardChanged(object sender, EventArgs e)
{
IDataObject iData = Clipboard.GetDataObject();
//clipboard not empty and these are the formats I am only interested in
if (iData.GetDataPresent(DataFormats.UnicodeText) || iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Html))
{
//do work
}
}
答案 1 :(得分:0)
试试此代码
if (Clipboard.ContainsText(TextDataFormat.Html))
{
returnHtmlText = Clipboard.GetText(TextDataFormat.Html);
Clipboard.SetText(replacementHtmlText, TextDataFormat.Html);
}