C# 在标题中使用word 2003 automation拖放的奇怪行为

C# 在标题中使用word 2003 automation拖放的奇怪行为,c#,interop,ms-office,vsto,office-2003,C#,Interop,Ms Office,Vsto,Office 2003,我正在为Word 2003开发一个基于模板的插件,它允许用户将列表框中的元素拖放到Word文档中。不幸的是,当我试图在文档的标题中删除元素时,我得到了一个非常奇怪的行为 打开模板并在标题中键入内容 关闭页眉并在页面上插入一些内容 添加分页符 切换到页面布局模式,并将缩放级别设置为“两页” 打开标题 缓慢地将列表项从列表框拖放到标题 请参阅出现导致Word崩溃的多页设置对话框 这是我的密码: // in ThisDocument.cs public MyUserControl _control;

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

  • 打开模板并在标题中键入内容
  • 关闭页眉并在页面上插入一些内容
  • 添加分页符
  • 切换到页面布局模式,并将缩放级别设置为“两页”
  • 打开标题
  • 缓慢地将列表项从列表框拖放到标题
  • 请参阅出现导致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);
    }
    
    我是否在实现拖放时犯了一些错误?这种奇怪的行为有解决办法吗

    提前感谢,
    奥利弗·哈纳皮

    录像带

    我制作了一个小视频,显示了这个bug。您可以从这里下载:

    不幸的是,我使用的工具没有注意到我更改了显示设置,所以尽管我使用了1280x768,但它录制了1920x1200,对于奇怪的视频大小感到抱歉。如果您无法观看视频,则可能缺少编解码器。你可以在这里找到它:


    我还忘了提到这个bug也发生在Word2007中。因为在我的本地机器上,我只有Word 2007,我用Word 2007录制了视频,但基本上与Word 2003相同(我在那里发现了错误)

    这在Word 2007中对我有效,但这似乎是一个糟糕的工作。尝试使用剪贴板在文档中设置关键字,然后处理WindowsSelectionChange事件,该事件在插入文本后似乎可靠地触发,以完成您真正想做的事情

    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
        }
    }
    
    public void listBox1\u MouseDown(对象发送方,MouseEventArgs e)
    {
    剪贴板.SetText(“”);
    IDataObject dObject=Clipboard.GetDataObject();
    //这是来自VSTO的错误,这就是为什么使用剪贴板。
    DoDragDrop(dObject,DragDropEffects.All);
    }
    作废应用程序\u窗口选择更改(Microsoft.Office.Interop.Word.Selection Sel)
    {
    如果(Sel.Range.Text==“”)
    {
    Sel.Range.Text=string.Empty;
    //采取行动
    }
    }
    
    在Word 2011中,mac也会出现doc和docx文件
    还有一个问题是从游标中可视化复制头和工件。前两个问题是2007 for windows的已知问题。

    您在Word中发现了一个错误。除了打电话给Microsoft支持人员之外,您无能为力。虽然他们可能会感谢你,并告诉你不要这样做。这可能是真的,但我仍然希望有某种工作方式或其他方式来实现拖放。每次我尝试它时,它似乎仍然不起作用,但我将在办公室测试它。顺便说一句,我制作了一个小视频,如果有人不能复制它,我会显示这个bug。