سلام خدمت تمام سی شارپ کاران:
دوستان چطوری می تونم یه کنترل مثل باتن رو بوسیله کلیدهای جهتی روی فرم حرکت بدم.
سلام خدمت تمام سی شارپ کاران:
دوستان چطوری می تونم یه کنترل مثل باتن رو بوسیله کلیدهای جهتی روی فرم حرکت بدم.
تو سایت در مورد KeyPress جستجو کن پیدا میکنی
برای باتن فکر نمیکنم بشه با کلیدهای جهت ها جابجاش کرد چون معمولا جهت ها واسه جابجا کردی کرسر استفاده میشه (در باتن). یه نمونه کد برای تکست باکس میذارم امیدوارم به دردت بخوره!
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyValue)
{
case 37: textBox1.Left--;
break;
case 38: textBox1.Top--;
break;
case 39: textBox1.Left++;
break;
case 40: textBox1.Top++;
break;
}
}
ممنون از جواب دوستمون. ولی ای کاش می شد این کار رو برای دیگر کنترل ها نیز انجام داد. مثلا باتن. اگه من برای باتن این کارو بکنم فقط فوکوسش تغییر می کنه نه موقعیتش. آیا راه حلی وجود داره؟
سلام این جا یه مثال هست اما با کلیدهای جهتی نیست با کرسر هست امیدوارم بدردت بخوره.
موفق باشید
می تونی مشابه کد بالا رو تو keypress فرمت بنویسی منتهی باید حتماً keypreview رو برای فرمت true کنی
کاملا درسته. از همگی ممنون.
من دارم یه بازی مارپیچ می سازم. حالا یه سوال دیگه: چطوری می توانم کاری کنم که اگر شی به کناره های خط برخورد کرد از خط عبور نکنه.
سلام
می توانید محتصات کناره های خط را با محتصات کناره های شی مورد نظر مقایسه کنید و در صورت تداخل از ادامه حرکت آن جلوگیری کنید.
موفق باشید.
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
ممنون از شما. ولی اگه لطف کنید و یکمی از کد مربوطه را برام بزارید قول می دم بقیش رو خودم انجام بدم.
اين كدي هستش كه از راست و چپ كنترل ميكنه. اينجا نسبت به فرم در نظر گرفته شده. يعني از راست و چپ فرم بيرون نميره.حالا اگه شما فرضا ميخوايد از يك خط مايل اون طرف تر نره، باز با همين روش ها و با توجه به اين اطلاعاتي كه داري (فاصله باتن از چپ،پهناي باتن ، فاصله باتن از بالا ، ارتفاع باتن ) و اطلاعات خطي كه داري ميتوني مقايسه كني.:
if (btnRobot.Left <= this.Left/*Line1.left*/)
btnRobot.Left = this.Left;
if (btnRobot.Left + btnRobot.Width >= this.Width/*Line2.Width*/)
btnRobot.Left = this.Width - btnRobot.Width;
سلام
این کدو ببین یک button رو داخل Panel محدود میکنه
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
int Step = 2;
if (e.KeyValue == 39)
{
if (button1.Left + button1.Width < panel1.Width)
button1.Left += Step;
}
else if (e.KeyValue == 37)
{
if (button1.Left > 0)
button1.Left -= Step;
}
else if (e.KeyValue == 38)
{
if (button1.Top > 0)
button1.Top -= Step;
}
else if (e.KeyValue == 40)
{
if (button1.Top + (button1.Height) < panel1.Height)
button1.Top += Step;
}
}
آخرین ویرایش به وسیله Mahmoud.Afrad : یک شنبه 01 دی 1398 در 04:32 صبح
با سلام و احنرام.
شما برای حرکت دادن یک کنترل به صورت اصولی مثلا برای پیاده سازی بازی میتونید از لینک زیر استفاغده کنید
لینک آموزشی