PDA

View Full Version : پیگیری خطا e.KeyCod == Keys.Up



kamayestani
چهارشنبه 08 خرداد 1392, 11: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, 11:07 صبح
من دقت نكردم
مگه رويداد form_load ميشه از e.keycode استفاده كرد
اين كد مال رويداد keyup هستش

kamayestani
چهارشنبه 08 خرداد 1392, 11: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, 11: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, 13:08 عصر
ممنون دیگه error نمیده ولی باتن هم حرکت نمیکنه ویژگی locked رو false کردم خاصیت دیگه ای هم وجود داره که نذاره باتن موقع اجرا حرکت کنه

danialafshari
چهارشنبه 08 خرداد 1392, 13:15 عصر
ممنون دیگه error نمیده ولی باتن هم حرکت نمیکنه ویژگی locked رو false کردم خاصیت دیگه ای هم وجود داره که نذاره باتن موقع اجرا حرکت کنه

روی فرم کلیک کن و خاصیت KeyPreview رو برابر True کن

kamayestani
چهارشنبه 08 خرداد 1392, 13:23 عصر
ممنون true کردم ولی بازم حرکت نمیکنه

kamayestani
چهارشنبه 08 خرداد 1392, 15:45 عصر
کدتون رو امتحان کردم فکر میکنم هیچ عکس العملی نسبت به فشردن کلید ها نشون نمیده حرکت باتن رو در رویداد کلیک تعریف کردم جواب داد.

kamayestani
چهارشنبه 08 خرداد 1392, 22: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, 00:18 صبح
info.Location = new System.Drawing.Point(info.Location.X, info.Location.Y + 26);
این کدی هست که من تست کردم و جواب داد !
چرا جواب نمیده بهت ؟
امکانش هست اون قسمتی از برنامه ات که این مشکل را داره بزاری (یا همون کد را داخل یک پروژه بنویس بزار دقیقا پروژه را) تا پروژه را اصلاح کنم برات اپلود کنم ؟
موفق باشی

kamayestani
پنج شنبه 09 خرداد 1392, 01: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, 01: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, 12:55 عصر
سلام (roomusic) از اینکه کمکم میکنید ممنونم ولی ایراد اینکه کلید ها کار نمیکنند از کد نیست از جای دیگه باید باشه خاصیت KeyPreview هم true استi

roomusic
پنج شنبه 09 خرداد 1392, 13:28 عصر
سلام دوست عزیز
من برات یه سورس میزارم ببین کارت راه میافته!!
این سورس جوری هستش که حتی اگه رو برنامت فوکوس هم نداشته باشی تشخیص میده که کدوم کلید هارو داری فشار میدی ( مثل کاری که ویندوز انجام میده برای مدیا پلیر)
اینم لینک :
http://roozbeh-km.tk/project/RawInput.zip (http://roozbeh.3owl.com/project/RawInput.zip)
ممکن خاصیتی ، کدی ، چیزی نوشتی که مانع اجرای ابن کد میشه!

roomusic
پنج شنبه 09 خرداد 1392, 13:36 عصر
دوست عزیز
سورس برنامه ای هم که میخوای (همون کدی که لازم داری) رو برایت میزارم.
ببین میشه کاری کرد روش و ببین برات کار میکنه یا نه!
http://roozbeh-km.tk/project/test_key.zip

kamayestani
پنج شنبه 09 خرداد 1392, 13:45 عصر
:لبخندساده:ممنون برنامتون اجرا میشه حالا باید با برنامه خودم تطبیق بدم ببینم چه مشکلی داره

roomusic
پنج شنبه 09 خرداد 1392, 13:57 عصر
خـــــــوب به سلامتی!:لبخند:
هر چی در توانم هست کمک میکنم
هم چنین با همکاری کل انجمن:خجالت:

kamayestani
پنج شنبه 09 خرداد 1392, 14:02 عصر
فایل اجرایی درست کار میکنه ولی وقتی کدشو تو برنامه خودم مینویسم کار نمیکنه میتونید قسمت .sln رو هم در اختیارم قرا ر بدین

roomusic
پنج شنبه 09 خرداد 1392, 14:11 عصر
یه تایمر بزار یا تو رویداد keyup فرم قیل از همه ی کد ها ، کد زیر رو قرار بده
this.KeyPreview = true;


میتونید قسمت .sln رو هم در اختیارم قرا ر بدین
مگه فایل .csproj رو نزاشتم تو زیپ؟؟:متفکر:

kamayestani
پنج شنبه 09 خرداد 1392, 14:15 عصر
چرا اخه این پسوندش فرق میکرد ممنون :چشمک:

roomusic
پنج شنبه 09 خرداد 1392, 14:26 عصر
همون فایل .csproj رو با Visual Studio باز کن:لبخند:

kamayestani
پنج شنبه 09 خرداد 1392, 14:50 عصر
سلام برنامه رو براتون میذارم میتونید خودتون دلیلش و بفهمین
http://baraesh.persiangig.com/button%20-3%20-%20Copy.rar

roomusic
پنج شنبه 09 خرداد 1392, 15:37 عصر
برنامه رو براتون درست کردم
مشکل شما این جا بود که به رویداد keyup فرمتون آدرس تابع رو نمیدادین
اینم لینک برنامتون:
http://roozbeh-km.tk/project/button%20-3%20-%20Copy.zip

براتون کد پرتاب تیر ها رو با کلید Space نوشتم:لبخند:

مشکل بعدی هم اینه که با تغییر btn5 تیر های پرتاب شده باز هم از یک نقطه پرتاب میشن که گذاشتم خودت درست کن:لبخند:
برنامه ی قشنگیه
موفق باشی