ファイルダイアログでファイルをダブルクリックするとコントロールの位置が変わる

このQ&Aのポイント
  • WindowsXP、VB.NET2005で開発しています。フォームにコントロールを配置し、コントロール(ラベル・ピクチャーボックス)を動的に作成してマウスのドラッグにて移動できるようにしております。
  • 問題となっているのは、ContextMenuから実行する処理でファイルダイアログを起動しているのですが、そのファイルダイアログのファイルをダブルクリックして選択すると、もとのコントロールの位置が変わってしまいます。
  • ファイルダイアログで行っている処理は選んだファイル名の格納だけなので、移動するのがなぜかわかりません。
回答を見る
  • ベストアンサー

ファイルダイアログでファイルをダブルクリックするとコントロールの位置が変わる

WindowsXP、VB.NET2005で開発しています。 フォームにコントロールを配置し、 コントロール(ラベル・ピクチャーボックス)を動的に作成して マウスのドラッグにて移動できるようにしております。 問題となっているのは ContextMenu から実行する処理で ファイルダイアログを起動しているのですが、 そのファイルダイアログのファイルをダブルクリックして選択すると もとのコントロールの位置が変わってしまいます。 ファイルダイアログで行っている処理は選んだファイル名の格納だけなので、移動するのがなぜかわかりません。 OKボタンクリックでは移動しません。 画面上にラベルピクチャーボックスがある状態で 上記操作をすると、ピクチャーボックスが移動してしまいます。 移動しなくなるときもあるのですが、 法則がつかめておりません。 原因としてどういったことが考えられるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ダブルクリックでファイル名を格納した後に、マウスの座標取得やClick・Dragなどなどが重なって動いていないですか? デバッグして、ダブルクリック後の動きを見てみるのも手だと思いますよ。

mohmori77
質問者

お礼

ご回答ありがとうございました。 ファイル名取得時点からデバッグしてみたのですが、 デバッグでは追いきれませんでした。 動的にコントロールを追加しているので イベントもAddhandlerで追加しており、 うまくデバッグできないのかもしれません。 デバッグで追っかけるしか手がなさそうなので 試してみます。

関連するQ&A

  • なぜVBEにはファイルダイアログボックスがないんですか

    私はプログラマーでもないんですが、会社の同期がVB.NETを使っています。そこにはドラッグアンドドロップするとファイルダイアログボックスが簡単につくれるようになっています。しかしoffice2003,2007でのコントロールではそのようなダイアログは見当たりません。ということは、VBAでダイアログボックスが欲しい場合は(例えばファイル選択時など)、自分でコードを書いてダイアログボックスを作るか、どこかからコードを見つけてコピペするしかないのでしょうか?

  • VS2008-Proでラベルコントロールの絶対位置にしたい。

    VS2008-Proでラベルコントロールの絶対位置にしたい。 初心者です。Web勉強中です。 <オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れてますが、ラベルコントロールが自由な名位置(「絶対配置」)になりません。 ボタンやテキストコントロールはできるのですが。 どうすれば、なるのでしょうか。教えていただけませんか?

  • コントロールのグループ化

    VBってコントロールのグループ化はできますか? ラベルとテキストボックスをくっつけて、一緒に移動できるようにしたいのですが どこからグループ化すればいいかわかりません。 CTRLボタンを押しながら、二つのコントロールをクリックするところまでは出来ました!

  • vb2008 コントロール配列

    VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

  • コントロールのドラック&ドロップ

    コンニチワ VBでフォームに配置したコントロールを ドラック可能にして フォーム上でドラック&ドロップを 検出してドラック前の位置から ドロップ後の位置にコントロールを 移動させたいのですが どうしてもずれたりして 上手く配置されません どなたか同じようなことをやったことがある方 ベストなやり方 わかる方教えて下さい よろしくお願いします

  • カレンダーコントロールのダイアログボックス

    ACCESSでボタンをクリックすると、カレンダーコントロールのダイアログボックスが表示されて、日付が入力出来るようにしたいのですが... この方法で日付を入力するテキストボックスに共通で使用出来たらと考えています。 カレンダーコントロールのダイアログボックスの作成から分からないのでお願いします。

  • ダイアログボックス・・・・・ bySDK

    現在SDKにて画像処理ソフトを作成しています。もちろん個人にて。 そこで確実にほしい機能”ヒストグラム”の表示を行おうと思ったのですが、問題が起こりました。 目的は”2値化"という処理に伴い、ダイアログボックスに入力した画像のヒストグラムを表示させたいということです。 もちろんヒストグラムは単に白黒だけで表示させたいと思っています。 問題というのはダイアログボックスに任意の図形をどのように描画するかです。ビットマップの描画は以前行ったことがあるのですが、任意の図形は行ったことがありませんでした。 試しに、ダイアログボックスにPicture Controlを貼り付け、そのPicture ControlのデバイスコンテキストをGetDCにより無理やり取得し、そのデバイスコンテキストに直線などの描画を行ってみましたが、表示はされませんでした。(あたりまえかも・・・・) そこでまず、ダイアログボックスに使用するコントロール類は何を設定したらよいか? そして、そのコントロールから取得したデバイスコンテキストに直接描画は可能か? これらの質問に答えられる方はアドバイスをお願いしたいと思います。 よろしくお願いします。

  • ダイアログボックスについて。

    ダイアログボックスについての質問です。 開発環境はVisual C++ 2005.netでありSDKを利用しています。 ダイアログボックスにPicture Controlを貼り付け、Combo Boxの内容が変わるたびにそのPicture Controlに画像を表示するようなプログラムを作りたいと考えています。 自分が考える手順としてはまずPicture Controlについてサブクラス化を行い、親のダイアログボックスが表示されると同時にPicture ControlのプロシージャでWM_CREATEメッセージを受け取り描画を行う。 そして親のダイアログボックスに貼り付けたCombo Boxの内容が変更された場合に、Picture ControlのウィンドウハンドルにむけてWM_PAINTメッセージを送信する。 こんな手順で行いたいのですが、少し不安な部分が出てきました。 Combo Boxの内容が変更され、Picture Controlのウィンドウハンドルに向けてWM_PAINTメッセージを送信し、Picture ControlプロシージャではWM_PAINTメッセージがきたとき画像の描画を行う場合、このプロシージャではどの画像を描画してよいか不明です。 そのため何番の画像の表示命令が来たのかを示すために、親のダイアログボックスに貼り付けたCombo Boxが変更された場合、Picture Controlに向けてWM_PAINTメッセージと表示画像番号をパラメータとして送信したいのです。 もちろんグローバル変数を用意すれば簡単なのですが、できるだけ使用しないように記述をしたいのです。そこで考えたのが、 SendMessage(GetDlgItem(hDlgWnd, IDC_PICTURE), WM_PAINT, 0, MAKELPARAM(0, number)); このようにnumberをLPARAMの下位ワードとして送信しようと考えました。 このメッセージ送信を行い、Picture ControlプロシージャでWM_PAINTメッセージが到着したとき、LOWORD(lparam)からnumberを取り出す。 実現したい目的のため、このような方法を考えましたが、エラーなく実行できるでしょうか? もしあやしい部分が見つかった場合はアドバイスをお願いします。そしてこの方法よりも簡単に処理できる方法があれば教えていただきたいです。 自分としてはサブクラス化は面倒なので、Picture Controlをオーナードローとして扱う方法も考えましたが、うまく動きませんでしたTT

  • VB2005 コントロールの背景を透過

    フォームにバックグラウンドイメージを設定しているのですが その上にグループボックスやラベルを貼り付けたら、フォームのイメージが隠れてしまいます。 VB6はコントロールに背景を透過にするプロパティがあったので探してみたのですが、見当たりません。 おそらくVB2005でも簡単に透過設定できると思うのですが… グループボックスとラベルを透過に設定する簡単な方法はありますでしょうか? (コントロールの継承になってくる?) また、これはおそらく無理だと思うのですが ピクチャーボックスで表示されている画像の透過部分にも フォームの背景イメージを表示させる、ということは可能でしょうか? よろしくお願い致します。

  • Excelをダブルクリックしても開きません。

    Excelをダブルクリックしても開きません。 ・Excelを先に開き、メニューから開くこと ・開いているExcelにドラッグ&ドロップで開くこと 上記の2つは可能です。 Excelのツールのオプションの設定ですが、 全般タブ-「ほかのアプリケーションを無視する」 こちらのチェックは外れています。 プログラムの設定ができていないのだろうと思い、 ファイルの上で右クリックし、 「ファイルを開くプログラムの選択」のダイアログボックスを表示させたのですが、 設定した後のOKボタンを押すことが出来ません。 どうすればダブルクリックして開けるように、設定できるのでしょうか? よろしくお願いします。