为Word Addin创建对话框

5

如何为Word Addin创建设置对话框。

我已经创建了一个Windows Form,并调用了'form.Show()'。但它创建了一个新的窗口。

如何通过form.ShowDialog(owner)传递所有者?

我通过创建一个打开对话框的助手来解决我的问题,但我不知道这是否是最佳方法。

public static DialogResult ShowDialog(Form dialog)
{
    NativeWindow mainWindow = new NativeWindow();
    mainWindow.AssignHandle(Process.GetCurrentProcess().MainWindowHandle);
    DialogResult dialogResult = dialog.ShowDialog(mainWindow);
    mainWindow.ReleaseHandle();
    return dialogResult;
}

我只创建了一个Windows窗体并调用了Show()方法! - Victor
你能详细解释一下你所说的如何创建form.ShowDialog(owner)吗?你是在创建自定义表单吗?如果是这样,那么你需要通过代码创建表单/调用该创建。例如,设计表单,然后动态调用它,这是你所说的吗?我有点困惑你的意思,请展示一下你的代码,视觉效果会让其他人更容易参与进来... - MethodMan
如果你只是调用form.ShowDialog(),那么你只是创建了一个新的对话框。但是如果你按照答案中的代码执行,你会看到不同的行为,就像一个子对话框!答案并不是让它工作,我们应该做得更好! :) - Victor
看起来一样,你能描述一下有什么区别吗? - Tangocoder
这个问题是3年前提出的。我真的不记得了。 - Victor
显示剩余3条评论
1个回答

7
我解决问题的方法是创建代码:
public static DialogResult ShowDialog(Form dialog)
{
    NativeWindow mainWindow = new NativeWindow();
    mainWindow.AssignHandle(Process.GetCurrentProcess().MainWindowHandle);
    DialogResult dialogResult = dialog.ShowDialog(mainWindow);
    mainWindow.ReleaseHandle();
    return dialogResult;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接