- ベストアンサー
VB2010平面移動:Panelをマウス操作で移動させる方法
- VisualBasic2010のコードを使用して、MouseDownとDragDropを使ってPanelを移動させる方法について質問があります。
- 質問者はPanel1, Panel2, Panel3をPanel4に移動させたいと考えていますが、移動させたものが最前面に表示されてしまいます。
- 質問者はPanel1を最前面に表示させたいと考えており、この問題に対する解決策を求めています。
- みんなの回答 (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のうちどれが一番前になるかはコピーした順番によります。
その他の回答 (2)
- nag0720
- ベストアンサー率58% (1093/1860)
>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つにすることができます。
補足
回答ありがとうございます。 問題を解決することができました。 補足なのですが、 Panelの数を増やしていった場合、Panel1,Panel2,Panel3を前にもってきて、Panel4,Panel5,Panel6は後ろに持ってくる ということは可能でしょうか?
- angel_Z
- ベストアンサー率66% (12/18)
こんにちは。 BringToFront メソッドで最前面にできますよ。 MouseDownイベントの最後に追加してみてはどうでしょうか? 例) Panel1.BringToFront()
補足
こんばんは。 回答ありがとうございます。 それは 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 ということでしょうか? 時間がありましたらお返事いただけると助かります。
お礼
回答ありがとうございます。 親切に教えていただき感謝いたします。 今後、また質問させていただくことがあるかと思いますが、その時はまたお力添えいただけるとありがたく思います。 今回はまことにありがとうございました。