Ich bin sehr neu in C#, aber versuchen zu lernen, also ertragen Sie mit mir, wenn meine Syntax nicht korrekt ist. Ich bin in der Lage, eine Bildbox mit einer Schaltfläche zu erstellen und es erscheint auf dem Bildschirm. Ich kann es dann mit einer Mouse-Down-/Mouse-Move-Funktion gut über den Bildschirm bewegen. Ich drücke dann den Knopf, um eine weitere Picturebox zu erstellen, die erstellt werden kann, und kann diese auch verschieben, aber wenn ich versuche, die erste Picture Box zu bewegen, bewegt sich die zweite stattdessen und wird wahnsinnig. Gibt es eine Möglichkeit, die Kästchen der Instanziierung zu referenzieren oder zu markieren, so dass ich, wenn ich auf eines von ihnen klicke, sie um den Bildschirm bewegen kann?Referenzieren mehrerer instanziierter PictureBoxen
public partial class Form1 : Form
{
Point MP;
private static Control PB;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int picSizeX = Properties.Resources.police.Width/3;
int picSizeY = Properties.Resources.police.Height/3;
PictureBox pb = new PictureBox();
pb.Location = new Point(100, 100);
pb.Size = new Size(picSizeX, picSizeY);
pb.Image = new Bitmap(Properties.Resources.police);
pb.SizeMode = PictureBoxSizeMode.StretchImage;
Controls.Add(pb);
pb.Tag = "veh";
PB = pb;
pb.MouseDown += Pb_MouseDown;
pb.MouseMove += Pb_MouseMove;
pb.MouseHover += Pb_MouseHover;
}
private void Pb_MouseHover(object sender, EventArgs e)
{
PB.MouseHover += PB_MouseHover;
}
private void PB_MouseHover(object sender, EventArgs e)
{
}
private void Pb_MouseDown(object sender, MouseEventArgs e)
{
MP = e.Location;
}
private void Pb_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
PB.Left = e.X + PB.Left - MP.X;
PB.Top = e.Y + PB.Top - MP.Y;
}
}
}
Ich glaube, ich habe den Code in einer Bearbeitung veröffentlicht, als Sie dies geschrieben haben. Es tut uns leid. – Rob
Warum hast du 'static' Control auf Klassenebene gehalten? – Hassan
das ist Müll, der dort gelassen wurde, als ich versuchte, es herauszufinden. Ich dachte, ich hätte es vor dem Posten gelöscht. – Rob