• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010平面移動)

VB2010平面移動:Panelをマウス操作で移動させる方法

このQ&Aのポイント
  • VisualBasic2010のコードを使用して、MouseDownとDragDropを使ってPanelを移動させる方法について質問があります。
  • 質問者はPanel1, Panel2, Panel3をPanel4に移動させたいと考えていますが、移動させたものが最前面に表示されてしまいます。
  • 質問者はPanel1を最前面に表示させたいと考えており、この問題に対する解決策を求めています。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

>Panelの数を増やしていった場合、Panel1,Panel2,Panel3を前にもってきて、 >Panel4,Panel5,Panel6は後ろに持ってくる ということは可能でしょうか? If srsPnl Is Panel1 Then の箇所を、 If srsPnl Is Panel1 Or srsPnl Is Panel2 Or srsPnl Is Panel3 Then とすればできます。 ただし、Panel1,Panel2,Panel3のうちどれが一番前になるかはコピーした順番によります。

TMYMS
質問者

お礼

回答ありがとうございます。 親切に教えていただき感謝いたします。 今後、また質問させていただくことがあるかと思いますが、その時はまたお力添えいただけるとありがたく思います。 今回はまことにありがとうございました。

その他の回答 (2)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

>Panel1.BringToFront() >End Sub >ということでしょうか? Pnnel1はコピー元のパネルなのでそれを最前にしても無意味です。 コピー元ではなくて、コピーされたのパネルを最前にする必要があります。 Pnnel1のコピーを最前にしたいなら、 Panel4_DragDropプロシジャの最後のPanel4.Controls.Add(dstPnl)の後に、 If srsPnl Is Panel1 Then dstPnl.BringToFront() End If を追加してください。 余談ですが、 Private Sub Panel1_MouseDown Private Sub Panel2_MouseDown Private Sub Panel3_MouseDown この3つのプロシジャはまとめて、 Private Sub Panel1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown, Panel2.MouseDown, Panel3.MouseDown sender.DoDragDrop(sender, DragDropEffects.Move) End Sub と1つにすることができます。

TMYMS
質問者

補足

回答ありがとうございます。 問題を解決することができました。 補足なのですが、 Panelの数を増やしていった場合、Panel1,Panel2,Panel3を前にもってきて、Panel4,Panel5,Panel6は後ろに持ってくる ということは可能でしょうか?

  • angel_Z
  • ベストアンサー率66% (12/18)
回答No.1

こんにちは。 BringToFront メソッドで最前面にできますよ。 MouseDownイベントの最後に追加してみてはどうでしょうか? 例) Panel1.BringToFront()

TMYMS
質問者

補足

こんばんは。 回答ありがとうございます。 それは Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown Panel1.DoDragDrop(Panel1, DragDropEffects.Move) Panel1.BringToFront() End Sub ということでしょうか? 時間がありましたらお返事いただけると助かります。

関連するQ&A