画面上のボタンを右クリックすると違う画面を表示させるように
していのですが、どのようにすればよいのでしょうか?
何かよい方法はありますか?
なぜ右クリックでなければならないのでしょう?
通常コマンドボタンのClickイベントにShowメソッドを書き込み
別フォームを表示させることが実現できます。
既にClickイベントに別の処理が存在するのであれば、
もう一つコマンドボタンを用意すればよいと思います。
既にClickイベントに別の処理が存在しており、他にコマンドボタンを
追加できない状態なのです。
一応できないことはないです。
コマンドボタンのMouseDownイベントに右クリックされたときだけ
処理するように書き込みます。
Private Sub Command1_MouseDown _
(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
Call Form2.Show
End If
End Sub
しかし、こういう使い方はWindows標準のインターフェイスから大きく逸脱
しているため、あまり好ましくないとされています。
なぜ好ましくないかというと、
・通常とは違う操作なのでユーザーを混乱させる
・思わぬところで思わぬエラーが発生し、デバックに苦労する
などあげられます。
なるべくほかの方法を取ることをお勧めします。
Clickイベントがすでに埋まってるのなら、右クリックより、これらの方法をお勧めします。
1.Clickイベントで、メニューをポップアップして、選んでもらう。
2.ボタンを、2分割する。(スペースが無いなら、無理やり拡張するとか、サイズを半分にするとか)
3.まったくほかの方法を考える。
なぜならt@Kiさんの言うとおり、右クリックはポップアップメニューという暗黙の了解が(あるかどうかは知りませんが(^^ゞ)Windowsにはあります。
さらに、右クリックイベントを作っても、ボタンがへっこみません。
SendMessageでできなくは無いですけど、Clickと衝突するので、
うまくよけないといけません。
フォームを表示するような、特に大事な動作は、
右クリックにしないほうがいいと思います。
ポップアップメニューを自分で作って、
ポップアップメニューの中に入れるって方法もありますよ。
ただし、フォーム上だとコピー・貼り付けができるけど、
ほかのアプリケーションにできないっていうのがあったような。
いろいろ不都合があったような。。。
かなり昔に本で読んでやっただけなのでまったくテストしてないので・・・・
あとあまり記憶に残ってないです。
あっ
たかみちえさんがすでに書いてましたね。
ごめんなさい。
お酒飲んで酔ってます。
本当にごめんなさい。
皆さんご返答ありがとうございました。私のやりたいことを簡単に説明します。
まず、下図のような数字がランダムに入っている表が画面いっぱいに表示されて
います。ここで既にある数字をないところにドラック・アンド・ドロップで移動することができます。数字のあるところで右クリックすると違う画面を表示し、その
数字を変更できるといった感じです。右クリックというのは決め事なので変える事はできないのです。
|___|___|___|___|___|___|___|___|___|_ | | | | | | | | | |
|3__|7__|___|4__|___|___|12_|___|13_|_
| | | | | | | | | |
|9__|___|___|___|3__|___|___|6__|9__|_
| | | | | | | | | |
|___|1__|___|___|2__|10_|1__|___|___|_
| | | | | | | | | |
すいません。表が見づらくなってしまいました。
ようは表があってその中にところどころランダムに数字が
入ってるイメージです。
> 右クリックというのは決め事なので変える事はできないのです。
それならもうt@Ki さんが例を書いているのですから、
それを使っては?
ツイート | ![]() |