form.show从ribbonbar无模式

时间:2012-10-04 18:55:37

标签: c# vsto excel-2010

我有一个插件,它通过功能区栏上的按钮将工具窗口显示为showdialog。这个模型版本工作正常。现在,我需要允许与表单下的电子表格进行交互。我试过了:

spec.Show(((IWin32Window)Globals.myAddin.Application.ActiveWindow));

我收到了“可疑的演员”错误。当然'这个'失败了,因为工具栏不是可投射到'IWin32Window'的形式

我希望它的功能类似于内置的查找窗口,您可以在其中调用它并仍与底层电子表格进行交互。表格很简单:

public partial class Spec : Form
显然,我错过了一些东西。 TIA


根据Slaks评论添加此内容:

    public class DialogService
    {
        public void ShowDialog(Form dialog)
        {
            NativeWindow mainWindow = new NativeWindow();
            //mainWindow.AssignHandle(Process.GetCurrentProcess().MainWindowHandle);
            Application app = new Application();
            mainWindow.AssignHandle(new IntPtr(app.Hwnd));
            dialog.Show(mainWindow);
            mainWindow.ReleaseHandle();

        }
   }

使用app.Hwnd或Process.GetCurrentProcess()时的问题.MainWindowHandle表格立即消失。也许我过于复杂了。还有比我在这里做的更好的方式吗?

1 个答案:

答案 0 :(得分:0)

您需要创建自己的实现IWin32Window的类,并从其HWND属性中返回Excel的Handle