神秘的剪贴板问题:
我有一个正在开发的应用程序,它启动一个外部应用程序(作为 System.Diagnostics.Process 对象),该应用程序预计会将一些数据(文本)复制到剪贴板。当外部应用程序关闭时,客户端应用程序从剪贴板中检索文本。
问题是,尽管一旦外部应用程序将文本复制到剪贴板,我就可以将其粘贴到记事本中,但客户端应用程序会从剪贴板获取空字符串。
外部应用代码:
private void btn1_Click(object sender, EventArgs e)
{
//copy text pane to clipboard
DataObject obj = new DataObject();
obj.SetData(tbText.Text);
System.Windows.Forms.Clipboard.SetDataObject(obj);
}
客户端应用代码:
string returnedValues = string.Empty;
System.Windows.Forms.IDataObject data = System.Windows.Forms.Clipboard.GetDataObject();
if (data != null && data.GetDataPresent(System.Windows.Forms.DataFormats.Text) == true)
{
returnedValues = (string) data.GetData(System.Windows.Forms.DataFormats.Text, true));
}
数据对象始终为空,即使剪贴板中有文本并且我可以将其粘贴到其他应用程序中。
任何人都可以指出客户端应用程序代码中的缺陷吗?为什么即使剪贴板上有数据,“数据”总是为空?