OpenFileDialogの所有者を設定したいのですが(ネームスペース内でMicrosoft.Win32
はありません)、ウィンドウのハンドル ( IntPtrSystem.Windows.Forms
)しか持っていません (ハンドルはアプリケーションからのものである必要はなく、外部のものである可能性があります)。
それは可能ですか、それともからOpenFileDialogSystem.Windows.Forms
を使用する必要がありますか?
を呼び出す効果が欲しい
protected abstract bool RunDialog(IntPtr hwndOwner);
基本クラスCommonDialog内にありますが、保護されています。回避策はありますか?リフレクションを使用してこのメソッドを取得して実行できますか、それとも「よりクリーンな」方法がありますか?
通常のShowDialog()
方法では a のみが許可されますがWindow
、これは私が持っていないものです。
このコードを使用して、ハンドルしかないときに他のウィンドウの所有者を設定しますが、のコンストラクターはWindowInteropHelper
のみを受け取り、から継承Window
しCommondDialog
ませんWindow
。
Window window;
IntPtr ownerHwnd;
var wih = new WindowInteropHelper(window);
wih.Owner = ownerHwnd;