در این آموزش، قصد داریم تا محل قرارگیری یک کنترل را با استفاده از کد تغییر دهیم؛ که برای انجام آن، باید از ویژگی 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); }
در این مورد، به لینک «متحرک سازی کنترل ها و بررسی برخورد در ویژوال سی شارپ» مراجعه کنید.
سلام داداش یه کدی میخوواستم وقتی پلیرم مثلا F گرفتم یه ابجکنیو حرکت بدم
سلام
ببخشید میخوام یه باتن رو در فرم حرکت بدم و وقتی به کناره های فرم برخورد کرد برگرده حرکتش متوقف بشه یا از سمت مخالف وارد صفحه بشه؟ لطفا راهنماییم کنید
با تشکر
متحرک سازی کنترل ها و بررسی برخورد در ویژوال سی شارپ
سلام خسته نباشید
چطور میشه تعریف کرد که اگه یه پیکچر باکس روی یه پیکچر باکس دیگه قرار گرفت یه عمل خاصی انجام بشه؟؟
ممنون میشم جواب بدید.
سلام. از مختصات هردو و طول و عرضشون برای تشخیص برخورد استفاده کنید. (لینک)
ببخشید من با دیزاینر به یه لیبل یه لوکیشن میدم بعد همون لوکیشن با کد
label.location =new point(x ,y)
بعدجای اون تغییر میکنه بعد فکر کنم لوکیشن که در دیزاینر هست با لوکیشن که در کدنویسی میدیک بهش فرق میکنه
ممنون میشم کمکم کنید
متاسفانه متوجه نشدم که مشکلتون دقیقا چیه
مثلا یه label دارم روی فرم که اگه از طریق properties لوکیشنو ببینیم میبینم روی مثلا 300;400 هست اما تو قسمت کدنویسی میگم label1.location new point(400;300) ولی بعد میبینیم که هنگام اجرا جاش تغییر میکنه که نباید اینگونه باشه
یعنی الان مشکل من اینه که لوکیشنی که توی کدنویسی بهش میدم بهه تنظیمات properties فرق داره
تو حالت دوم، لیبل رو ویژوالی ایجاد کردین یا از داخل کد؟!
همچنین دقت کنید که موقع تنظیم مکان از داخل Properties، درست ذخیره شده باشه چون بعضی اوقات تکون میخوره و جابهجا میشه 🙂
ویژوال
خب من باید چیکار بکنم چون من دیدم تو کامپیوتر های دیگه که این اتفاق نمی افته
خب چرا تو بعضی کامپیوتر ها نمیشه در ضمن من امتحان کردم با رویداد موس دیدم که مختصات در دیزاین با مختصات در هر نقطه فرق داره
مشکل شما میتونه بهخاطر رزولیشن مانیتورتون باشه. اگه داخل ویژوال استودیو یه پیامی بهصورت Scaling on your main display is set to 125% و … وجود داره، روی ریسارت مقابلش کلیک کنید تا رزولیشن صد در صد شه یا از تنظیمات ویندوزتون تو دسکتاپ حالت Scale رو روی 100% قرار بدین.
آها درست شد ولی آیکون ها دیگه خیلی کوچیک شد امکانش هست که خود سیشارپ scale رو تغییر بدهیم؟؟؟
از بخش Properties، ویژگی AutoScaleMode فرم رو None کنید
واقعا متشکرم خیلی وقت بود که این برام دردسرساز شده بود
سلام
یه دکمه دارم ک میخوام با هربار کلیک شدن روش مکانش به صورت رندم عوض بشه
چطوری باید اینکارو انجام بدم ؟!
سلام وقت بخیر من میخام یه برنامه بنویسم که مختصات تعدادی مستطیل رو بهش بدم و داخل یک صفحه گرافیکی مستطیل هارو رسم کنه تا اینجاشو نوشتم
بعدش میخام با ماوس بتونم مستطیل هارو جابجا کنم و اگر دو تا مستطیل رو هم افتاد جابجایی رو انجام نده میشه راهنماییم کنین توی drag and drop مستطیل گیر کردم🙏🙏🙏
خدا خیرت بده با این اموزشت
خیلی خوب بود👌🏻👌🏻💖
عالییی بود من واقعا نیاز داشتم