UserControl während Laufzeit in einem Panel bewegen... geht nicht zu 100%, Control springt immer

26/03/2009 - 20:10 von Volkan Senguel | Report spam
Hallo zusammen, ich benötige hier eine Möglichkeit ein Panel wàhrend der
Laufzeit im Panel welches auf der Winform liegt zu bewegen.
Eigentlich klappt dies auch, nur dass die Location immer springt..

hier mal ein Beispiel was die Location tut wenn ich den Mauszeiger drücke
und dann das Control bewege:

...
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
...

Hierzu mal der Code von der Testform, die 2 UserControls sind einfach nur
leere Controls mit einem farbigen Hintergrund:
==using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DragAndDrop
{
public partial class Form1 : Form
{
private bool isDragging = false;
Control myControl;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
UserControl1 c1 = new UserControl1();
c1.Location = new Point(30, 30);
c1.MouseDown += new MouseEventHandler(userControl_MouseDown);
c1.MouseUp += new MouseEventHandler(userControl_MouseUp);
c1.MouseLeave += new EventHandler(userControl_MouseLeave);
c1.MouseMove += new MouseEventHandler(userControl_MouseMove);

panel1.Controls.Add(c1);
}

private void userControl_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
Console.WriteLine(e.Location.ToString());
myControl.Location = e.Location;
}
}
private void userControl_MouseDown(object sender, MouseEventArgs e)
{
this.isDragging = true;
myControl = (Control)sender;
Console.WriteLine("Down: " + isDragging.ToString());
}
private void userControl_MouseUp(object sender, MouseEventArgs e)
{
myControl = null;
this.isDragging = false;
Console.WriteLine(isDragging.ToString());
}
private void userControl_MouseLeave(object sender, EventArgs e)
{
// to do
}
}
}
==
Dies tritt aber nur auf wenn ich wàhrend dem Ziehens dem Control eine neue
Position zuweise "myControl.Location = e.Location;".

Kann mir jemand sagen was ich hier falsch mache?

Danke für jeden Hinweis.
Volkan
 

Lesen sie die antworten

#1 Volkan Senguel
26/03/2009 - 21:18 | Warnen spam
Sorry ich meinte natürlich dass ich ein UserControl anstatt eines Panels zu
verschieben versuche ;)

Gruss
Volkan

"Volkan Senguel" schrieb im Newsbeitrag
news:
Hallo zusammen, ich benötige hier eine Möglichkeit ein Panel wàhrend der
Laufzeit im Panel welches auf der Winform liegt zu bewegen.
Eigentlich klappt dies auch, nur dass die Location immer springt..

hier mal ein Beispiel was die Location tut wenn ich den Mauszeiger drücke
und dann das Control bewege:

...
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
{X€,Yˆ}
{X8,Y'}
...

Hierzu mal der Code von der Testform, die 2 UserControls sind einfach nur
leere Controls mit einem farbigen Hintergrund:
==> using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DragAndDrop
{
public partial class Form1 : Form
{
private bool isDragging = false;
Control myControl;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
UserControl1 c1 = new UserControl1();
c1.Location = new Point(30, 30);
c1.MouseDown += new MouseEventHandler(userControl_MouseDown);
c1.MouseUp += new MouseEventHandler(userControl_MouseUp);
c1.MouseLeave += new EventHandler(userControl_MouseLeave);
c1.MouseMove += new MouseEventHandler(userControl_MouseMove);

panel1.Controls.Add(c1);
}

private void userControl_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
Console.WriteLine(e.Location.ToString());
myControl.Location = e.Location;
}
}
private void userControl_MouseDown(object sender, MouseEventArgs e)
{
this.isDragging = true;
myControl = (Control)sender;
Console.WriteLine("Down: " + isDragging.ToString());
}
private void userControl_MouseUp(object sender, MouseEventArgs e)
{
myControl = null;
this.isDragging = false;
Console.WriteLine(isDragging.ToString());
}
private void userControl_MouseLeave(object sender, EventArgs e)
{
// to do
}
}
}
==>
Dies tritt aber nur auf wenn ich wàhrend dem Ziehens dem Control eine neue
Position zuweise "myControl.Location = e.Location;".

Kann mir jemand sagen was ich hier falsch mache?

Danke für jeden Hinweis.
Volkan




Ähnliche fragen