PDA

View Full Version : اجرای event کلیک button تا زمانی که دکمه ماوس پایین هست



amin_a_y
پنج شنبه 26 آبان 1390, 20:08 عصر
سلام دوستان خسته نباشید...!
من چطور می تونم وقتی روی یک button کلیک میکنم رویداد کلیک هی تکرار نشه تا وقتی که کلیک رو بر نداشتم...!
مثلا من برای پورت سریال یک رشته میفرستم و تا وقتی button فشرده شده رشته هی ارسال بشه؟!
و با برداشتن کلیک دیقه ارسال نشه!
ممنون

Amir Oveisi
پنج شنبه 26 آبان 1390, 20:27 عصر
با دو روش میشه این کار رو انجام داد:
۱- به جای event کلیک از mouseDown‌ استفاده کنید و تا زمانی که mouseDown‌ هست کار مورد نظر رو انجام بدید و با MouseUp متوقفش کنید.
۲- از Toggle Button (http://www.akadia.com/services/dotnet_user_controls.html#Toggle%20Button%20User%2 0Control) ها استفاده کنید.

mmd2009
پنج شنبه 26 آبان 1390, 20:28 عصر
با سلام

یک مثال ساده برات میزنم امیدوارم متوجه بشی :


private static int a;

private void timer1_Tick(object sender, EventArgs e)
{
Text = (++a).ToString();

}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
timer1.Enabled = false;
}

private void button1_MouseDown(object sender, MouseEventArgs e)
{
timer1.Enabled = true;
}


در کد بالا هر بار روی دکمه کلیک موس رو میگیری یک بار به a اضافه میکنه تا زمانی که کلیک موس رو ازحالا down به حالت up ببری

موفق باشی

amin_a_y
پنج شنبه 26 آبان 1390, 20:41 عصر
ممنون فهمیدم...!
فقط یه مشکل این است که وقتی برنامه زیر رو امتحان کردم خطا داد میشه لطف کنید اشکالش رو بگید!
بازم ممنون

for (intlable = 1; intlable >0; intlable++)
{
intlable += 1;
if (MouseDown==true)
break;
}

mmd2009
پنج شنبه 26 آبان 1390, 20:47 عصر
چه اروری دادی ؟

این MouseDown چیه ؟ اگر event هست که جای تعجب نیست که ارور بده.

amin_a_y
پنج شنبه 26 آبان 1390, 20:49 عصر
بله event من تازه کارم!:ناراحت:
این رو باید کجا وارد کنم؟!
ممنون

mmd2009
پنج شنبه 26 آبان 1390, 20:56 عصر
خب دوست عزیز بگید میخوایید چیکار کنید تا راحت بشه توضیح داد. این for برای چیه. چه کاری رومیخوایید انجام بدید

amin_a_y
پنج شنبه 26 آبان 1390, 21:16 عصر
ممنون
می خوام وقتی روی یک Button کلیک کردم هی یه رشته به پورت سریال ارسال بشه و با برداشتن Button دیگه رشته ارسال نشه!

mmd2009
پنج شنبه 26 آبان 1390, 21:19 عصر
خب در بالا یک مثال زدم کد ارسال رشته رو بذار تو رویداد MouseDown

amin_a_y
پنج شنبه 26 آبان 1390, 21:21 عصر
خوب تا وقتی من کلیک رو ول نکردم این رشته هی به پورت سریال ارسال میشه یا فقط یک بار ارسال میشه؟

mmd2009
پنج شنبه 26 آبان 1390, 21:26 عصر
یک بار ارسال میشه اگر مستقیم بذار تو رویداد MouseDown . در مثال بالا timer رو ببینید. کار تایمر اینه که کد رو برای شما تکرار میکنه. در فاصله زمانی که شما برای تعیین میکنید

programerinfonet
جمعه 27 آبان 1390, 09:46 صبح
سلام دوست عزیز این قطعه کد رو هم تست کن

private void button1_MouseUp(object sender, MouseEventArgs e)
{
eventname.cansel = false;
}