c#使用GetTextAsync时无效的FORMATETC结构



我正在尝试制作一个程序,自动搜索我在文件中复制的单词,然后将剪贴板中的单词替换为在我的文件中发现的行。我成功地设置了一个eventandler来查看剪贴板何时更改。我现在正在尝试实现一种读取我的文件的方法。

尝试使用StringReader后抛出异常:

FORMATETC结构无效。

这是我现在的代码:

public partial class MainWindow : System.Windows.Window
{
string line;
string currentClipboardContent;
string expectedClipboardContent;
string vocabularygerman = Properties.Resources.vocabularygerman;
string vocabularyfrench = Properties.Resources.vocabularyfrench;
int lineNumber;
public MainWindow()
{
InitializeComponent();
Windows.ApplicationModel.DataTransfer.Clipboard.ContentChanged += new EventHandler<object>(this.TrackClipboardChanges_EventHandler);
}
private async void TrackClipboardChanges_EventHandler(object sender, object e)
{
DataPackageView dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains(StandardDataFormats.Text))
{
currentClipboardContent = await dataPackageView.GetTextAsync();
if (expectedClipboardContent != currentClipboardContent)
{
Thread.Sleep(500);

using (var reader = new StringReader(vocabularygerman))
{
lineNumber = 0;
while ((line = reader.ReadLine()) != null)
{
lineNumber++;
if (line.Contains(currentClipboardContent))
{
System.Windows.Forms.Clipboard.SetDataObject(lineNumber);
break;
}
}
}
expectedClipboardContent = System.Windows.Forms.Clipboard.GetText();
}
}
}

一切工作正常,直到我试图使用StringReader。我正在考虑完全放弃字符串阅读器并使用流阅读器,但是我无法在资源中使用我的vocabularygermany .txt文件。

StringReader没有实现IDataObject接口,因此SetDataObject方法不喜欢这样,因为它依赖于该接口的存在。

Clipboard.SetText(lineNumber.ToString())

如果你需要StringReader.

PS:对async调用使用await

相关内容

  • 没有找到相关文章

最新更新