2

我正在为 Word 2003 开发一个基于模板的插件,它允许用户将元素从列表框中拖放到 Word 文档中。不幸的是,当我试图在文档的标题中删除元素时,我遇到了一个非常奇怪的行为。

  1. 打开模板并在标题中输入一些内容
  2. 关闭页眉并在页面上插入一些内容
  3. 添加分页符。
  4. 切换到页面布局模式并将缩放级别设置为“两页”
  5. 打开标题
  6. 慢慢地将列表项从列表框中拖放到标题中。
  7. 查看导致 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);
}

我在实现拖放方面做错了吗?这种奇怪的行为有解决方法吗?

在此先感谢,
奥利弗·哈纳皮

视频

我制作了一个小视频来展示这个错误。你可以从这里下载:http ://rapidshare.com/files/364907873/word-2003-bug.rar

不幸的是,我使用的工具没有注意到我更改了显示设置,所以虽然我使用了 1280x768,但它记录了 1920x1200,所以对于奇怪的视频尺寸感到抱歉。如果您无法观看视频,则可能缺少编解码器。你可以在这里得到它:http: //camstudio.org/

我也忘了说这个bug也出现在Word 2007中。因为在我的本地机器上我只有Word 2007,所以我用Word 2007录制了视频,但是对于Word 2003来说基本上是一样的(我发现了这个bug)

4

2 回答 2

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
    }
}
于 2010-03-19T06:59:43.953 回答
1

在带有 doc 和 docx 文件的 Word 2011 for mac 中也发生了标题和来自游标的工件的视觉重复问题。前两个问题是 2007 for windows 的已知问题。

于 2011-05-31T23:52:56.110 回答