我正在为Word 2003开发基于模板的插件,允许用户将列表框中的元素拖放到word文档中。不幸的是,当我试图在文档的标题中删除元素时,我会遇到一种非常奇怪的行为。
这是我的代码:
// in ThisDocument.cs
public MyUserControl _control;
public void Init()
{
_control = new MyUserControl();
ActionsPane.Controls.Add(_control);
ActionsPane.Visible = true;
}
// in MyUserControl.cs
public void listBox1_MouseDown(object sender, MouseEventArgs e)
{
DoDragDrop("something", DragDropEffects.Copy);
}
我是否在实施Drag and Drop时遇到了一些错误?这种奇怪的行为是否有解决方法?
提前致谢,
Oliver Hanappi
视频
我制作了一个显示错误的小视频。您可以从此处下载:http://rapidshare.com/files/364907873/word-2003-bug.rar
不幸的是我使用的工具没有注意到我改变了显示设置,所以虽然我使用了1280x768,它录制了1920x1200,很抱歉奇怪的视频大小。如果您无法观看视频,可能缺少编解码器。你可以在这里得到它:http://camstudio.org/
我也忘了提到错误也发生在Word 2007中。因为在我的本地机器上我只有Word 2007,我用Word 2007录制了视频,但它基本上与Word 2003相同(我发现了缺陷)
答案 0 :(得分:1)
这在Word 2007中对我有用,但它似乎是一个糟糕的解决方法。尝试使用剪贴板在文档中设置关键字,然后处理WindowSelectionChange事件,该事件似乎在文本插入后可靠地触发,以执行您真正想要完成的操作。
public void listBox1_MouseDown(object sender, MouseEventArgs e)
{
Clipboard.SetText("<#KEYWORD#>");
IDataObject dObject = Clipboard.GetDataObject();
//This is extremely buggy coming from VSTO, this is why the clipboard is used.
DoDragDrop(dObject, DragDropEffects.All);
}
void Application_WindowSelectionChange(Microsoft.Office.Interop.Word.Selection Sel)
{
if (Sel.Range.Text == "<#KEYWORD#>")
{
Sel.Range.Text = string.Empty;
// Do some action
}
}
答案 1 :(得分:1)
在Word 2011 for Mac中也发生了doc和docx文件 游标的标题和工件的可视复制也存在问题。前两个问题是2007年的Windows已知问题。