ve kontrolümü taşımak ve panele üzerine düşmesi yerini almak istiyorum sürükleyerek. Ben mouseUp, mouseDown, kontrol MouseMove olayları denedim.Ama aradığım şey değil. DragDrop etkinliğini panelde ateşlemek ve kontrolü taşımak istiyorum. Bunu yapabilir miyim? Bana bir fikir verebilirsen, harika olacak. Aşağıda benim kodumun bir parçası. Lütfen düzelt beni. Çok teşekkürler. Kontrol panelinde zaten ve sadece o fare olayları kullanarak, aynı panel içinde onu taşıyorsanızTaşı kontrolleri yaparken sürükle ve bırak panelde C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DragnDrop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Control mycontrol;
int x, y;
//Form1 f = new Form1();
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control c in this.panel1.Controls)
{
c.MouseMove += new MouseEventHandler(lblDragger_MouseMove);
c.MouseUp += new MouseEventHandler(lblDragger_MouseUp);
c.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
c.MouseDoubleClick += new MouseEventHandler(pictureBox1_MouseDown);
}
panel2.AllowDrop = true;
foreach (Control c in this.panel2.Controls)
{
c.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
}
panel2.DragOver += new DragEventHandler(panel2_DragOver);
panel2.DragDrop += new DragEventHandler(panel2_DragDrop);
}
bool isDragging ;
int clickOffsetX ;
int clickOffsetY ;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
// this.Cursor = Cursors.SizeAll;
//pictureBox1 = (PictureBox)sender;
Control c = sender as Control;
//DoDragDrop(pictureBox1.Image, DragDropEffects.Copy);
// validation = true;
isDragging = true;
clickOffsetX = e.X;
clickOffsetY = e.Y;
// c.DoDragDrop(c, DragDropEffects.Move);
}
private void lblDragger_MouseUp(System.Object sender, System.Windows.Forms.MouseEventArgs e)
{
isDragging = false;
}
private void panel2_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(Bitmap)))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void panel2_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void panel2_DragDrop(object sender, DragEventArgs e)
{
Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control;
mycontrol = c;
if (c != null)
{
c.Location = this.panel2.PointToClient(new Point(e.X, e.Y));
this.panel2.Controls.Add(c);
}
}
private void lblDragger_MouseMove(System.Object sender,
System.Windows.Forms.MouseEventArgs e)
{
Control c = sender as Control;
// bool isDragging = true;
if (isDragging == true)
{
c.Left = e.X + c.Left - clickOffsetX;
c.Top = e.Y + c.Top - clickOffsetY;
}
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
Control c = sender as Control;
c.DoDragDrop(c, DragDropEffects.Move);
}
}
}
Yanıtlarınız için teşekkür ederiz, denetimleri panel içinde taşımak istiyorum ve ayrıca denetimleri bir panelden başka bir panele sürükleyip bırakmak istiyorum. Her ikisini de başarmak istiyorum. Bunu nasıl yapabilirim? – Dinu
Eğer c.DoDragDrop (c, DragDropEffects.Move) işlemek için söylediğini you.Here ederiz; İlk panelin mouseLeave olayında ? Doğru mu? Ama aynı panelde yalnızca kontrollerin hareketini yapıyor. :( – Dinu
Aşağıdakileri yapmanız gerekir (genel olarak Google'da bulunabilmek için DragDrop'un bir çok örneği vardır): - Fareyi terk ederken DoDragDrop'u çağırın, kumandayı kullanarak kontrol panelini 'sürükleyin' - Hedef panelinizin AllowDrop değerinin true olarak ayarlandığından emin olun. - Hedef panelinizin DragEnter ve DragDrop olaylarını bağlamayı sağlamak ve gerçek düşme işlemlerini gerçekleştirmek için kullanın. –