Я хотел бы установить владельца OpenFileDialog (в пространстве имен Microsoft.Win32
, а не System.Windows.Forms
), но у меня есть только дескриптор (IntPtr) окна (дескриптор не обязательно должен быть из моего приложения, он может быть внешним).
Возможно ли это или я вынужден использовать OpenFileDialog от System.Windows.Forms
?
Я хочу иметь эффект вызова
protected abstract bool RunDialog(IntPtr hwndOwner);
внутри базового класса CommonDialog, но он защищен. Есть ли обходной путь? Могу ли я использовать отражение, чтобы получить этот метод и выполнить его, или есть более чистый способ сделать это?
Обычный метод ShowDialog()
допускает только Window
, чего у меня нет.
Я использую этот код, чтобы установить владельца другого окна, когда у меня есть только дескриптор, но конструктор WindowInteropHelper
принимает только Window
, а CommondDialog
не наследуется от Window
:
Window window;
IntPtr ownerHwnd;
var wih = new WindowInteropHelper(window);
wih.Owner = ownerHwnd;
RunDialog
. Версии WinForms содержат одни и те же собственные диалоги, так что это, вероятно, лучший вариант. - person Charles Mager   schedule 06.07.2015