我想设置OpenFileDialog的所有者(不在命名空间内Microsoft.Win32
)System.Windows.Forms
,但我只有窗口的句柄(IntPtr)(句柄不必来自我的应用程序,它可以是外部的)。
这是可能的还是我被迫使用OpenFileDialogSystem.Windows.Forms
?
我想要调用的效果
protected abstract bool RunDialog(IntPtr hwndOwner);
在基类CommonDialog内,但它受到保护。有办法吗?我可以使用反射来获取此方法并执行它,还是有一种“更清洁”的方法来做到这一点?
普通ShowDialog()
方法只允许 a Window
,这是我没有的。
当我只有句柄时,我使用此代码设置其他窗口的所有者,但构造函数WindowInteropHelper
只接受 aWindow
并且CommondDialog
不继承自Window
:
Window window;
IntPtr ownerHwnd;
var wih = new WindowInteropHelper(window);
wih.Owner = ownerHwnd;