DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ダイアログの位置の固定方法は?

環境/言語:[Vb2003]
分類:[.NET]

OpenFileDialog などを表示することは問題ないのですが、特定のフォーム上で
場所を固定して表示させることは出来ないものでしょうか?
位置とサイズを変更できないようにしてダイアログを開きたいのですが
何か良い手法をご存知有りませんでしょうか
> OpenFileDialog などを表示することは問題ないのですが、特定のフォーム上で
> 場所を固定して表示させることは出来ないものでしょうか?
> 位置とサイズを変更できないようにしてダイアログを開きたいのですが

詳しくはないのですが、
OpenFileDialogクラスは継承できないので基本クラスのCommonDialogクラスを継承して
OwnerWndProcをオーバーライドして実装するという形になるような。。。
#上記の理由でOpenFileDialogの各メンバも実装する必要がありますけど。
■No16461に返信(としさんの記事)
> OpenFileDialog などを表示することは問題ないのですが、
> 特定のフォーム上で場所を固定して表示させることは出来ないものでしょうか?
> 位置とサイズを変更できないようにしてダイアログを開きたいのですが

これは、表示されるフォームを移動できないようにするということなのでしょうか?
OpenFileDialog は、位置を変更できると思うのですが...

ということを考えると、呼び出し元のフォームを固定したいということなのかな、と思いました。
それであれば、モーダルで表示すれば良いのではないでしょうか?
この場合、Show メソッドではなく、ShowDialog メソッドを使います。

どちらなのか、あるいは別のことを所望しているのかわからないので、
こんな回答になってしまいましたが、お許しください。
>>位置とサイズを変更できないようにしてダイアログを開きたいのですが
>
> これは、表示されるフォームを移動できないようにするということなのでしょうか?

なるほど。。。
上記の一文だけだとそういう解釈もできますね。
確かにちょっと不明確な表現でした
やりたい内容は、フォームの内の特定の位置(フォームに対して Left位置、Top位置)
にOpenFileDialog を表示したいです。
位置を指定するプロパティーが無いようです

出来ればフォームを移動した際にそれに伴ってOpenFileDialogも移動する
といった動きをさせたいのです。
テキストボックスなどのコントロールと同じ感覚でフォームにOpenFileDialogを貼り付け対のですが...

せめて初期表示の位置だけでも固定出来ると良いのですが...

ちなみにshowdialog で表示させています
> やりたい内容は、フォームの内の特定の位置(フォームに対して Left位置、Top位置)
(略)
> といった動きをさせたいのです。

相当小細工しないと実現できないでしょうね。

ダークな案ですが、MFC が内部でやっているようにコモンダイアログの表示の瞬間をフックで捕まえて、元フォームを親ウィンドウとして無理やり設定してみるとか。。。

いっそ、「ファイルを開く」ダイアログ相当のユーザコントロールを自前で作ってしまった方が早かったりするかもしれませんね。
> ダークな案ですが、MFC が内部でやっているようにコモンダイアログの表示の瞬間をフックで捕まえて、元フォームを親ウィンドウとして無理やり設定してみるとか。。。

あ、これ駄目ですね。
WS_POPUP スタイルは後から外せないんだった ;-p

DOBON.NET | プログラミング道 | プログラミング掲示板