View Full Version : پیگیری خطا e.KeyCod == Keys.Up
kamayestani
چهارشنبه 08 خرداد 1392, 12:02 عصر
سلام دوستان در کد زیر از key code خطا گرفته و زیر ان خط قرمز کشیده لطفا کمک کنید
privatevoid Form1_Load(object sender, EventArgs e)
{
if (e.KeyCod == Keys.Up) btn5.Top -= 10;//10 vahed be bala
if (e.KeyCode == Keys.Down) btn5.Top += 10;//10 vahed be payin
if (e.KeyCode == Keys.Left) btn5.Left -= 10;//10 vahed be Chap
if (e.KeyCode == Keys.Right) btn5.Left += 10;//10 vahed be Rast
}
hamid_hr
چهارشنبه 08 خرداد 1392, 12:07 عصر
من دقت نكردم
مگه رويداد form_load ميشه از e.keycode استفاده كرد
اين كد مال رويداد keyup هستش
kamayestani
چهارشنبه 08 خرداد 1392, 12:15 عصر
سلام امتحان کردم ولی دوباره همون خطا رو میده خطا هم اینه
Error 7 'System.EventArgs' does not contain a definition for 'KeyCode' and no extension method 'KeyCode' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)
mehrdad1991h
چهارشنبه 08 خرداد 1392, 12:53 عصر
سلام امتحان کردم ولی دوباره همون خطا رو میده خطا هم اینه
Error 7 'System.EventArgs' does not contain a definition for 'KeyCode' and no extension method 'KeyCode' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)
از این کد (e.KeyCode) در رویداد KeyDown استفاده کن تا بهت جواب بدهد وگرنه جواب نمیده بهت
موفق باشی
kamayestani
چهارشنبه 08 خرداد 1392, 14:08 عصر
ممنون دیگه error نمیده ولی باتن هم حرکت نمیکنه ویژگی locked رو false کردم خاصیت دیگه ای هم وجود داره که نذاره باتن موقع اجرا حرکت کنه
danialafshari
چهارشنبه 08 خرداد 1392, 14:15 عصر
ممنون دیگه error نمیده ولی باتن هم حرکت نمیکنه ویژگی locked رو false کردم خاصیت دیگه ای هم وجود داره که نذاره باتن موقع اجرا حرکت کنه
روی فرم کلیک کن و خاصیت KeyPreview رو برابر True کن
kamayestani
چهارشنبه 08 خرداد 1392, 14:23 عصر
ممنون true کردم ولی بازم حرکت نمیکنه
kamayestani
چهارشنبه 08 خرداد 1392, 16:45 عصر
کدتون رو امتحان کردم فکر میکنم هیچ عکس العملی نسبت به فشردن کلید ها نشون نمیده حرکت باتن رو در رویداد کلیک تعریف کردم جواب داد.
kamayestani
چهارشنبه 08 خرداد 1392, 23:16 عصر
دوستان توروخدا یکی کمکم کنه متو این کد واقعاگیر کردم کار نمیکنه
هیچ خطایی نمیده تنظیماتی لازمه انجام بدم تا دکمه های صفحه کلید کار کنه
privatevoid Form1_keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left) btn5.Location = newPoint(btn5.Location.X - 10, btn5.Location.Y);//10 vahed be Chap
if (e.KeyCode == Keys.Right) btn5.Left += 10;//10 vahed be Rast
}
mehrdad1991h
پنج شنبه 09 خرداد 1392, 01:18 صبح
info.Location = new System.Drawing.Point(info.Location.X, info.Location.Y + 26);
این کدی هست که من تست کردم و جواب داد !
چرا جواب نمیده بهت ؟
امکانش هست اون قسمتی از برنامه ات که این مشکل را داره بزاری (یا همون کد را داخل یک پروژه بنویس بزار دقیقا پروژه را) تا پروژه را اصلاح کنم برات اپلود کنم ؟
موفق باشی
kamayestani
پنج شنبه 09 خرداد 1392, 02:24 صبح
namespace
button
{
publicpartialclassForm1 : Form
{
Button[] a =new Button[100];
int x1;
int y1;
int s = 0;
int s1 = 0;
Button[]b = new Button[100];
int x2;
int y2;
Button[] c = new Button[100];
int x3;
int y3;
public Form1()
{
InitializeComponent();
}
privatevoid Form1_Load(object sender, EventArgs e)
{
x1 =this.btn1.Location.X;
y1 =this.btn1.Location.Y;
x2 = this.btn4.Location.X;
y2 = this.btn4.Location.Y;
x3 = this.btn5.Location.X + 138/2;
y3 =this.btn5.Location.Y;
}
privatevoid Form1_keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left) btn5.Location = new Point(btn5.Location.X - 10, btn5.Location.Y);//10 vahed be Chap
if (e.KeyCode == Keys.Right) btn5.Left += 10;//10 vahed be Rast
e.Handled =true;
}
privatevoid timer1_Tick(object sender, EventArgs e)
{
timer2.Start();
a[s] = new Button();
a[s].Location = new Point(x1+20, y1);
a[s].Height = 93;
a[s].Width = 20;
a[s].Parent = this;
b[s] =new Button();
b[s].Location = new Point(x2 -20, y2);
b[s].Height = 93;
b[s].Width = 20;
b[s].Parent = his;
s++;
if (s == 60)this.Close();
}
privatevoid timer2_Tick(object sender, EventArgs e)
{
for (int i = 0; i < s; i++)
{
a[i].Location = new Point(a[i].Location.X +10, y1);
b[i].Location = new Point(b[i].Location.X - 10, y2);
}}
privatevoid btn5_Click(object sender, EventArgs e) {
c[s1] = new Button();
c[s1].Location = new Point(x3, y3-10);
c[s1].Height = 10;
c[s1].Width = 10;
c[s1].Parent = this;
timer3.Start();
s1++;
}
privatevoid timer3_Tick(object sender, EventArgs e)
{
for (int j = 0; j < s1; j++)
{
c[j].Location = new Point(x3, c[j].Location.Y - 10);
for (int ij = 0; ij < s; ij++)
{
if(c[j].Visible ==true )
{
f (c[j].Location.X >= b[ij].Location.X && c[j].Location.X <= (b[ij].Location.X) + 20 && c[j].Location.Y >= b[ij].Location.Y && c[j].Location.Y <= (b[ij].Location.Y) + 100)
{
b[ij].Visible = false;
c[j].Visible = false;
}
}
if (c[j].Visible == true)
{
if (c[j].Location.X >= a[ij].Location.X && c[j].Location.X <= (a[ij].Location.X) + 20 && c[j].Location.Y >= a[ij].Location.Y && c[j].Location.Y <= (a[ij].Location.Y) + 100)
{
a[ij].Visible = false;
c[j].Visible = false;
}}}}}}}
roomusic
پنج شنبه 09 خرداد 1392, 02:46 صبح
سلام دوست عزیز (kamayestani (http://barnamenevis.org/member.php?258853-kamayestani))
از کد زیر استفاده کن ( تو رویداد keyup فرمت بنویس و تو پروپرتیز فرمت خاصبت KeyPreview رو true کن)
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
btn5.Top -= 10;
}
if (e.KeyCode == Keys.Down)
{
btn5.Top += 10;
}
if (e.KeyCode == Keys.Left)
{
btn5.Left -= 10;
}
if (e.KeyCode == Keys.Right)
{
btn5.Left += 10;
}
}
kamayestani
پنج شنبه 09 خرداد 1392, 13:55 عصر
سلام (roomusic) از اینکه کمکم میکنید ممنونم ولی ایراد اینکه کلید ها کار نمیکنند از کد نیست از جای دیگه باید باشه خاصیت KeyPreview هم true استi
roomusic
پنج شنبه 09 خرداد 1392, 14:28 عصر
سلام دوست عزیز
من برات یه سورس میزارم ببین کارت راه میافته!!
این سورس جوری هستش که حتی اگه رو برنامت فوکوس هم نداشته باشی تشخیص میده که کدوم کلید هارو داری فشار میدی ( مثل کاری که ویندوز انجام میده برای مدیا پلیر)
اینم لینک :
http://roozbeh-km.tk/project/RawInput.zip (http://roozbeh.3owl.com/project/RawInput.zip)
ممکن خاصیتی ، کدی ، چیزی نوشتی که مانع اجرای ابن کد میشه!
roomusic
پنج شنبه 09 خرداد 1392, 14:36 عصر
دوست عزیز
سورس برنامه ای هم که میخوای (همون کدی که لازم داری) رو برایت میزارم.
ببین میشه کاری کرد روش و ببین برات کار میکنه یا نه!
http://roozbeh-km.tk/project/test_key.zip
kamayestani
پنج شنبه 09 خرداد 1392, 14:45 عصر
:لبخندساده:ممنون برنامتون اجرا میشه حالا باید با برنامه خودم تطبیق بدم ببینم چه مشکلی داره
roomusic
پنج شنبه 09 خرداد 1392, 14:57 عصر
خـــــــوب به سلامتی!:لبخند:
هر چی در توانم هست کمک میکنم
هم چنین با همکاری کل انجمن:خجالت:
kamayestani
پنج شنبه 09 خرداد 1392, 15:02 عصر
فایل اجرایی درست کار میکنه ولی وقتی کدشو تو برنامه خودم مینویسم کار نمیکنه میتونید قسمت .sln رو هم در اختیارم قرا ر بدین
roomusic
پنج شنبه 09 خرداد 1392, 15:11 عصر
یه تایمر بزار یا تو رویداد keyup فرم قیل از همه ی کد ها ، کد زیر رو قرار بده
this.KeyPreview = true;
میتونید قسمت .sln رو هم در اختیارم قرا ر بدین
مگه فایل .csproj رو نزاشتم تو زیپ؟؟:متفکر:
kamayestani
پنج شنبه 09 خرداد 1392, 15:15 عصر
چرا اخه این پسوندش فرق میکرد ممنون :چشمک:
roomusic
پنج شنبه 09 خرداد 1392, 15:26 عصر
همون فایل .csproj رو با Visual Studio باز کن:لبخند:
kamayestani
پنج شنبه 09 خرداد 1392, 15:50 عصر
سلام برنامه رو براتون میذارم میتونید خودتون دلیلش و بفهمین
http://baraesh.persiangig.com/button%20-3%20-%20Copy.rar
roomusic
پنج شنبه 09 خرداد 1392, 16:37 عصر
برنامه رو براتون درست کردم
مشکل شما این جا بود که به رویداد keyup فرمتون آدرس تابع رو نمیدادین
اینم لینک برنامتون:
http://roozbeh-km.tk/project/button%20-3%20-%20Copy.zip
براتون کد پرتاب تیر ها رو با کلید Space نوشتم:لبخند:
مشکل بعدی هم اینه که با تغییر btn5 تیر های پرتاب شده باز هم از یک نقطه پرتاب میشن که گذاشتم خودت درست کن:لبخند:
برنامه ی قشنگیه
موفق باشی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.