WinForms 控件在尝试 5 - 15 次之前不会获得点击

WinForms control not getting clicks until tried 5 - 15 times

这真的很难,因为任何简单的例子都可行。此外,如果不在 drag/drop 期间调用,我们的复杂对话框也能正常工作。所以只有在大型复杂用例中我们才会遇到这个问题。

我们有一个对话框,其中有一个 DevExpress GridView(如下所示)。这是我们的 Office 插件(COM API,不是 VSTO)的一部分。如果我们在用户单击菜单按钮时弹出对话框 - 它工作正常。但是我们的用例是用户从我们的插件中的表单执行 drag/drop 以放入 Word 文档。

然后我们弹出对话框(表单)供用户select他们想要删除哪些列。所以在这种情况下,我们正处于 drag/drop 的中间。

错误:对于 Windows 10 上的 Word 365(在 Excel 和 PowerPoint 上没问题;在旧版本的 Office 上没问题),您需要在对话框 5 - 10 周围单击单击复选框之前的次数有效。此外,对网格中的 select 单元格进行编程调用也无济于事。

我认为问题不在于 DevExpress,因为此对话框在拖放用例之外工作正常。一旦点击足够多,它就可以正常工作。第一次单击时,小铅笔出现在左侧。一旦点击有效,铅笔就会消失,然后该行被标记为 selected.

我认为需要做一些事情才能使消息队列正常工作,转到正确的控件等。我已经尝试以编程方式调用 select 控件、网格视图中的单元格、检查 &取消选中复选框等。None 有效。

我在这里发帖是希望其他人遇到类似的问题并找到一系列调用来使消息泵正常工作。

We asked DevExpress - 但看起来这不是他们的问题。

我们在 IDataObject.GetData() 方法中调用它。在方法中调用对话框的代码是:

using (DataBinSelectCols dlg = new DataBinSelectCols(root.Children))
{
    if (dlg.ShowDialog() == DialogResult.Cancel)
        return null;
    nodesToUse = dlg.SelectedNodes;
}

答案是 Word 中的设置。在选项 select 中,如下所示: