تغییر مکان و جابه جایی یک کنترل در سی شارپ

در این آموزش، قصد داریم تا محل قرارگیری یک کنترل را با استفاده از کد تغییر دهیم؛ که برای انجام آن، باید از ویژگی Location موجود در کنترل‌ها استفاده کنیم و این ویژگی، از نوع کلاس Point می‌باشد. Point یا نقطه، کلاس است که از طریق آن می‌توانیم مختصات X و Y را اعمال کنیم.

مثال اول

در اینجا، یک Point جدیدی را برای یک TextBox مشخص می‌کنیم. به صورت زیر:

textBox1.Location = new Point(10, 10);

ورودی‌های متد سازنده‌ی کلاس Point، از ما x و y (مختصات) را دریافت می‌کند.

  • x: فاصله از چپ فرم
  • y: فاصله از بالای فرم

مثال دوم

حالا می‌خواهیم مکان یک کنترل TextBox، به صورت انیمیشنی تغییر یابد! پس می‌توانیم یک Timer به فرم اضافه کرده و کدهای خود را در رویداد Tick آن بنویسیم؛ تا بعد از گذشت زمان تعیین شده در ویژگی Interval آن، این کد بارها و بارها اجرا شود و باعث انیمیت شدن یا حرکت کنترل شود:

private void timer1_Tick(object sender, EventArgs e)
{
    textBox1.Location = new Point(textBox1.Location.X + 2, textBox1.Location.Y);
}

در این مورد، به لینک «متحرک سازی کنترل ها و بررسی برخورد در ویژوال سی شارپ» مراجعه کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده 20 دیدگاه

    1. میلاد کاربر مهمان گفت:

      سلام داداش یه کدی میخوواستم وقتی پلیرم مثلا F گرفتم یه ابجکنیو حرکت بدم

      11
    2. الناز کاربر مهمان گفت:

      سلام
      ببخشید میخوام یه باتن رو در فرم حرکت بدم و وقتی به کناره های فرم برخورد کرد برگرده حرکتش متوقف بشه یا از سمت مخالف وارد صفحه بشه؟ لطفا راهنماییم کنید
      با تشکر

      11
    3. navid کاربر مهمان گفت:

      سلام خسته نباشید
      چطور میشه تعریف کرد که اگه یه پیکچر باکس روی یه پیکچر باکس دیگه قرار گرفت یه عمل خاصی انجام بشه؟؟
      ممنون میشم جواب بدید.

      11
      1. هادی اکبرزاده مدیر سایت گفت:

        سلام. از مختصات هردو و طول و عرضشون برای تشخیص برخورد استفاده کنید. (لینک)

    4. رضا تقوی کاربر مهمان گفت:

      ببخشید من با دیزاینر به یه لیبل یه لوکیشن میدم بعد همون لوکیشن با کد
      label.location =new point(x ,y)
      بعدجای اون تغییر میکنه بعد فکر کنم لوکیشن که در دیزاینر هست با لوکیشن که در کدنویسی میدیک بهش فرق میکنه
      ممنون میشم کمکم کنید

      11
      1. هادی اکبرزاده مدیر سایت گفت:

        متاسفانه متوجه نشدم که مشکلتون دقیقا چیه

    5. رضا تقوی کاربر مهمان گفت:

      مثلا یه label دارم روی فرم که اگه از طریق properties لوکیشنو ببینیم میبینم روی مثلا 300;400 هست اما تو قسمت کدنویسی میگم label1.location new point(400;300) ولی بعد میبینیم که هنگام اجرا جاش تغییر میکنه که نباید اینگونه باشه
      یعنی الان مشکل من اینه که لوکیشنی که توی کدنویسی بهش میدم بهه تنظیمات properties فرق داره

      11
      1. هادی اکبرزاده مدیر سایت گفت:

        تو حالت دوم، لیبل رو ویژوالی ایجاد کردین یا از داخل کد؟!
        همچنین دقت کنید که موقع تنظیم مکان از داخل Properties، درست ذخیره شده باشه چون بعضی اوقات تکون می‌خوره و جابه‌جا میشه 🙂

        1. رضا تقوی کاربر مهمان گفت:

          ویژوال

          01
        2. رضا تقوی کاربر مهمان گفت:

          خب من باید چیکار بکنم چون من دیدم تو کامپیوتر های دیگه که این اتفاق نمی افته

          10
        3. رضا تقوی کاربر مهمان گفت:

          خب چرا تو بعضی کامپیوتر ها نمیشه در ضمن من امتحان کردم با رویداد موس دیدم که مختصات در دیزاین با مختصات در هر نقطه فرق داره

          11
          1. هادی اکبرزاده مدیر سایت گفت:

            مشکل شما میتونه به‌خاطر رزولیشن مانیتورتون باشه. اگه داخل ویژوال استودیو یه پیامی به‌صورت Scaling on your main display is set to 125% و … وجود داره، روی ریسارت مقابلش کلیک کنید تا رزولیشن صد در صد شه یا از تنظیمات ویندوزتون تو دسکتاپ حالت Scale رو روی 100% قرار بدین.

            1. رضا تقوی کاربر مهمان گفت:

              آها درست شد ولی آیکون ها دیگه خیلی کوچیک شد امکانش هست که خود سیشارپ scale رو تغییر بدهیم؟؟؟

              11
              1. هادی اکبرزاده مدیر سایت گفت:

                از بخش Properties، ویژگی AutoScaleMode فرم رو None کنید

                1. رضا تقوی کاربر مهمان گفت:

                  واقعا متشکرم خیلی وقت بود که این برام دردسرساز شده بود

                  11
    6. Vanitas کاربر مهمان گفت:

      سلام
      یه دکمه دارم ک میخوام با هربار کلیک شدن روش مکانش به صورت رندم عوض بشه
      چطوری باید اینکارو انجام بدم ؟!

      13
    7. ابوالفضل جعفری کاربر مهمان گفت:

      سلام وقت بخیر من میخام یه برنامه بنویسم که مختصات تعدادی مستطیل رو بهش بدم و داخل یک صفحه گرافیکی مستطیل هارو رسم کنه تا اینجاشو نوشتم
      بعدش میخام با ماوس بتونم مستطیل هارو جابجا کنم و اگر دو تا مستطیل رو هم افتاد جابجایی رو انجام نده میشه راهنماییم کنین توی drag and drop مستطیل گیر کردم🙏🙏🙏

      00
    8. Id کاربر مهمان گفت:

      خدا خیرت بده با این اموزشت
      خیلی خوب بود👌🏻👌🏻💖

      10
    9. امیر کاربر مهمان گفت:

      عالییی بود من واقعا نیاز داشتم

      00
توضیحات پیشنهادی نظرات اشتراک