私はC#の新機能ですが、構文が正確でない場合は、覚えようとしています。私はボタン付きのピクチャボックスを作成することができ、それは画面に表示されます。私はマウスの下/マウス移動機能を使って画面上を動かすことができます。その後、ボタンを押して作成する別のピクチャボックスをインスタンス化し、それを移動することもできますが、最初のピクチャボックスを移動しようとすると、代わりに2番目のピクチャボックスが移動し、狂ってしまいます。インスタンシエーション時にボックスを参照またはタグ付けする方法はありますか。そのため、それらのいずれかをクリックすると、それらを画面上で移動できます。複数のインスタンス化されたピクチャボックスを参照する
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;
}
}
}
私はあなたがこれを書いていたように編集でコードを投稿したと思います。ごめんなさい。 – Rob
なぜ静的なコントロールをクラスレベルに保ったのですか? – Hassan
それは私がそれを理解しようとしていたときにそこに残っていたゴミです。投稿する前に私はそれを消してしまったと思った。 – Rob