:چشمک:سلام خدمت تمام سی شارپ کاران:
دوستان چطوری می تونم یه کنترل مثل باتن رو بوسیله کلیدهای جهتی روی فرم حرکت بدم.
Printable View
:چشمک:سلام خدمت تمام سی شارپ کاران:
دوستان چطوری می تونم یه کنترل مثل باتن رو بوسیله کلیدهای جهتی روی فرم حرکت بدم.
تو سایت در مورد 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 کنی
کاملا درسته. از همگی ممنون.
من دارم یه بازی مارپیچ می سازم. حالا یه سوال دیگه: چطوری می توانم کاری کنم که اگر شی به کناره های خط برخورد کرد از خط عبور نکنه.
سلام
می توانید محتصات کناره های خط را با محتصات کناره های شی مورد نظر مقایسه کنید و در صورت تداخل از ادامه حرکت آن جلوگیری کنید.
موفق باشید.
ممنون از شما. ولی اگه لطف کنید و یکمی از کد مربوطه را برام بزارید قول می دم بقیش رو خودم انجام بدم.
اين كدي هستش كه از راست و چپ كنترل ميكنه. اينجا نسبت به فرم در نظر گرفته شده. يعني از راست و چپ فرم بيرون نميره.حالا اگه شما فرضا ميخوايد از يك خط مايل اون طرف تر نره، باز با همين روش ها و با توجه به اين اطلاعاتي كه داري (فاصله باتن از چپ،پهناي باتن ، فاصله باتن از بالا ، ارتفاع باتن ) و اطلاعات خطي كه داري ميتوني مقايسه كني.:
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;
}
}
با سلام و احنرام.
شما برای حرکت دادن یک کنترل به صورت اصولی مثلا برای پیاده سازی بازی میتونید از لینک زیر استفاغده کنید
لینک آموزشی