PDA

View Full Version : چک کردن رویداد کلیک دکمه ها



duji6967
شنبه 26 اسفند 1391, 00:47 صبح
سلام
بهترین و ساده ترین راهی که بشه توی برنامه چند تا دکمه رو چک کنیم که کدومشون کلیک شدن چیه؟

برای مثال من تو یه قسمتی از برنامه حلقه ای دارم که می خوام چک کنه که اگه دکمه 1 کلیک شده عدد 1 رو چاپ کنه و اگر دکمه 2 کلیک شد عدد 2 نمایش داده شود و تا یکی از این دو دکمه کلیک نشوند حلقه منتظر کلیک آنها بماند به انتها نرسد.

int m = 0;
for (int i = 0; i < 4; i++)
{
MessageBox.Show("Selected Button is : " + m);
}

abbas.oveissi
شنبه 26 اسفند 1391, 00:54 صبح
سلام
بهترین و ساده ترین راهی که بشه توی برنامه چند تا دکمه رو چک کنیم که کدومشون کلیک شدن چیه؟

برای مثال من تو یه قسمتی از برنامه حلقه ای دارم که می خوام چک کنه که اگه دکمه 1 کلیک شده عدد 1 رو چاپ کنه و اگر دکمه 2 کلیک شد عدد 2 نمایش داده شود و تا یکی از این دو دکمه کلیک نشوند حلقه منتظر کلیک آنها بماند به انتها نرسد.

int m = 0;
for (int i = 0; i < 4; i++)
{
MessageBox.Show("Selected Button is : " + m);
}

اگه تعدادشون خیلی کم هست چنتا bool تعریف کن به تعداد دکمه ها و بعد توی event کلیک دکمه ها تعریف کن هر دکمه که کلیک شد،متغیر متناظر با اون رو true کنه.بعدش ببین کدوم یک از متغیر ها true شده. این روش جواب میده برات؟یا راه دیگه میخوای؟

duji6967
شنبه 26 اسفند 1391, 01:11 صبح
سه تا دکمه دارم . مشابه همین کاری رو که فرمودین رو انجام دادم اما نتیجه نگرفتم

int m = 0;
bool a1 = false;
bool a2 = false;
for (int i = 0; i < 4; i++)
{
if (a1 == true)
{
m = 2;
a1 = false;
}
else if (a2 == true)
{
m = 3;
a2 = false;
}
MessageBox.Show("Selected Button is : " + m);
}
تو رویداد های مربوط به دکمه های 1 و 2 مقدار a1 و a2 به true تبدیل شدن.
مشکل این روش اینه که شرط رو چک می کنه و نتیجه رو نشون می ده و منتظر نمی مونه تا ما کلیک کنیم

Mahmoud.Afrad
شنبه 26 اسفند 1391, 01:51 صبح
استفاده از حلقه برای دریافت کلیک!!!!!!!!
رویداد برای همین ساخته شده دیگه.
متد زیر رو در نظر بگیر. رویداد click دکمه هارو از پنجره events روی این رویداد تنظیم کن:

private void btb_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
MessageBox.Show(btn.Name + "Clicked!");
}

abbas.oveissi
شنبه 26 اسفند 1391, 02:12 صبح
سه تا دکمه دارم . مشابه همین کاری رو که فرمودین رو انجام دادم اما نتیجه نگرفتم

int m = 0;
bool a1 = false;
bool a2 = false;
for (int i = 0; i < 4; i++)
{
if (a1 == true)
{
m = 2;
a1 = false;
}
else if (a2 == true)
{
m = 3;
a2 = false;
}
MessageBox.Show("Selected Button is : " + m);
}
تو رویداد های مربوط به دکمه های 1 و 2 مقدار a1 و a2 به true تبدیل شدن.
مشکل این روش اینه که شرط رو چک می کنه و نتیجه رو نشون می ده و منتظر نمی مونه تا ما کلیک کنیم

منظورت رو نمیفهمم که با چی مشکل داری :لبخند:
اما فکر کنم یکم توی مفاهیم اصلی اشکال داری.من چیزی که گفتم برای این بود فقط بتونی تشخیص بدی آیا تا حالا بر روی فلان دکمه(مثلا a1) کلیک شده یا نه.وگرنه اصن نمیدونم حلقه اینا برای چی استفاده میکنی؟؟اگر هم قراره موقع کلیک کردن کار خاصی انجام بشه،توی event کلیک اون دکمه بنویس کاراتو.

duji6967
شنبه 26 اسفند 1391, 07:29 صبح
منظورت رو نمیفهمم که با چی مشکل داری :لبخند:
اما فکر کنم یکم توی مفاهیم اصلی اشکال داری.من چیزی که گفتم برای این بود فقط بتونی تشخیص بدی آیا تا حالا بر روی فلان دکمه(مثلا a1) کلیک شده یا نه.وگرنه اصن نمیدونم حلقه اینا برای چی استفاده میکنی؟؟اگر هم قراره موقع کلیک کردن کار خاصی انجام بشه،توی event کلیک اون دکمه بنویس کاراتو.
نمی دونم کجای سوالم گنگ بود که متوجه نشدین.
عرض کردم می خوام تو حلقه منتظر بمونه تا من یکی از دکمه ها رو کلیک کنم و به ازای کلیک بر روی هر دکمه مقدار متغیر رو تغییر بده .
برای مثال من یه حلقه 30 تایی دارم وقتی که هر دور رو می خواد اجرا کنه منتظر بمونه تا من حتما یکی از دکمه ها رو کلیک کنم تا بره به دور بعد و تا دکمه ای رو کلیک نکنم حلقه منتظر بمونه.

duji6967
شنبه 26 اسفند 1391, 07:32 صبح
می شه یکمی بیشتر توضیح بدین که این دستورات دقیقا چه کاری می کنن؟

استفاده از حلقه برای دریافت کلیک!!!!!!!!
رویداد برای همین ساخته شده دیگه.
متد زیر رو در نظر بگیر. رویداد click دکمه هارو از پنجره events روی این رویداد تنظیم کن:

private void btb_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
MessageBox.Show(btn.Name + "Clicked!");
}

duji6967
شنبه 26 اسفند 1391, 17:25 عصر
کیست مرا یاری کند؟؟؟

C#‎_best_Programmer
شنبه 26 اسفند 1391, 19:32 عصر
if)sender as button.text==""
{
///
}

C#‎_best_Programmer
شنبه 26 اسفند 1391, 19:57 عصر
یه لیست درست کن هر وقت که باتوونی کلیک شد شمارشو اضافه کن به اون لیست:قلب:

erfan_urchin
شنبه 26 اسفند 1391, 21:15 عصر
دوست عزیز خب حلقه دیگه برای چی؟؟؟؟!!!!!!
تو event هر button کد بنویس که تا کلیک شد روش تو message box نشون بده
یه مثل این کد
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:1");
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:2");
}

private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:3");
}

C#‎_best_Programmer
شنبه 26 اسفند 1391, 21:22 عصر
فک کنم می خواد با تاخیر متوجه این کار بشه

duji6967
یک شنبه 27 اسفند 1391, 07:15 صبح
دوست عزیز خب حلقه دیگه برای چی؟؟؟؟!!!!!!
تو event هر button کد بنویس که تا کلیک شد روش تو message box نشون بده
یه مثل این کد
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:1");
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:2");
}

private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("selected button is:3");
}
من یه جدولی دارم که یه سری اطلاعات داخلش هست که می خوام به صورت ترتیبی نمایش داده بشن. من تونستم به صورت ترتیبی نمایشش بدم اما می خوام هنگامی که به ترتیب اطلاعات رو نشون می ده منتظر بمونه تا من با زدن یکی از دو کلید مورد نظرم جایگاه جدیدش رو تو جدول مشخص کنم یا به عبارتی یه فیلدی رو تغییر بدم. برای این کار از for استفاده کردم تا دیتا ها رو نمایش بده

duji6967
یک شنبه 27 اسفند 1391, 07:29 صبح
تاخیر که چه عرض کنم کلا برنامه مکث کنه تا من یکی از دکمه ها رو بزنم
فک کنم می خواد با تاخیر متوجه این کار بشه

zare69
یک شنبه 27 اسفند 1391, 07:40 صبح
سه تا دکمه دارم . مشابه همین کاری رو که فرمودین رو انجام دادم اما نتیجه نگرفتم

int m = 0;
bool a1 = false;
bool a2 = false;
for (int i = 0; i < 4; i++)

{
if (a1 == true)
{
m = 2;
a1 = false;
}
else if (a2 == true)
{
m = 3;
a2 = false;
}
MessageBox.Show("Selected Button is : " + m);
}
تو رویداد های مربوط به دکمه های 1 و 2 مقدار a1 و a2 به true تبدیل شدن.
مشکل این روش اینه که شرط رو چک می کنه و نتیجه رو نشون می ده و منتظر نمی مونه تا ما کلیک کنیم
یعنی می خوای بعد انجام کدهای داخل هر IFبرنامه متوقف و منتظر اقدام بعدی شما باشه درسته؟اگر اینجوری می خوای بعد انجام دستور داخل حلقه وقبل بسته شدن پرانتز دستورreturn; قرار بده برنامه متوقف میشود تا شما دستور بعدی را اجرا کنید

if (a1 == true)
{
m = 2;
a1 = false;
return;
}

duji6967
سه شنبه 29 اسفند 1391, 02:48 صبح
ممنون از راهنمایی تون اما این راه هم جواب نداد و اصلا منتظر نمی مونه تا من دکمه ای بزنم و حلقه تا انتها اجرا می شه

تنها راهی که تونستم پیدا کنم درست کردن یه فرم دیگه که توش دو تا دکمه مورد نظرم رو گذاشتم و وقتی حلقه شروع به شمردن می کنه بلافاصله فرم جدید باز می شه و من یکی از دکمه ها رو انتخاب می کنم و فرم جدید بسته می شه و می ره برای دور بعد حلقه و این کار تا انتهای شمارنده حلقه انجام می شه. تنها بدی این کار اینه که یه فرم به برنامم اضافه شد

من دنبال این هستم که می شه بدون این فرم جدید این کار رو انجام داد یا نه؟؟؟

یعنی می خوای بعد انجام کدهای داخل هر IFبرنامه متوقف و منتظر اقدام بعدی شما باشه درسته؟اگر اینجوری می خوای بعد انجام دستور داخل حلقه وقبل بسته شدن پرانتز دستورreturn; قرار بده برنامه متوقف میشود تا شما دستور بعدی را اجرا کنید

if (a1 == true)
{
m = 2;
a1 = false;
return;
}