PDA

View Full Version : سوال: نظر در مورد انتقال کنترل ها روی فرم



mbsmbsmbs
دوشنبه 01 شهریور 1389, 10:40 صبح
سلام
بنده چند پیکچر باکس روی فرمم دارم حالا چطوری می تونم هر کدوم رو حرکت بدم یعنی باید برای هر پیکچر باکس کد زیر را بنویسم؟
با تشکر فراوان



int yPosition;
int xPosition;
bool isDraged;
private void Form1_Load(object sender, EventArgs e)
{
xPosition = yPosition = 0;
isDraged = false;
}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.SizeAll;
xPosition = e.X;
yPosition = e.Y;
isDraged = true;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (isDraged)
{
pictureBox1.Left = pictureBox1.Left + e.X - xPosition;
pictureBox1.Top = pictureBox1.Top + e.Y - yPosition;
}
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
isDraged = false;
this.Cursor = Cursors.Default;
}
--------------------
منظورم اینه که چه طوری میشه تعداد خط کمتری کد بنویسم آیا راهی هست؟
به طور مثال من 30 پیکچر باکس روی فرمم دارم آیا باید برای اینکه هر کدووم کاربر با موس حرکت بده باید این کد را برای هر کدوم بنویسم؟
با تشکر

مهدی فرزاد
دوشنبه 01 شهریور 1389, 11:08 صبح
سلام
يك راهش اينه كه
1- براي مثلا PictureBox1 كدها و متد ها رو ايجاد كني
2 - متد pictureBox1_MouseMove رو به شكل زير اصلاح كني

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
PictureBox pbx = (PictureBox)sender;
if (isDraged)
{
pbx.Left = pbx.Left + e.X - xPosition;
pbx.Top = pbx.Top + e.Y - yPosition;
}
}
3- متد هاي MouseDown و MouseMove و MouseUp بقيه پيكچر باكس ها رو به ترتيب در قسمت Properties و در تب Event به pictureBox1_MouseDown و pictureBox1_MouseMove و pictureBox1_MouseUp متصل كني ( هر كدوم به متد مشابه خودش يعني MouseDown به pictureBox1_MouseDown و . . .)

ديگه حله و نيازي به كد نويسي براي بقيه نيست