PDA

View Full Version : سوال: اشکال در کنترل کردن KeyUp وقتی MessageBox نمایش داده میشه



ESG_Esfahan
چهارشنبه 19 خرداد 1395, 15:22 عصر
با سلام
برای کنترل های تکس باکس روی فرم رویداد KeyUp را به صورت زیر نوشتم تا وقتی کلید Enter زده شد فوکس به کنترل بعدی منتقل بشه
همه چیز درسته تا وقتی که وسط کار لازم دارم messagebox نشون بدم
مثلا کاربر داخل تکس باکس Enter میزنه چک میکنم اطلاعات وارد شده درست نیست پس ی پیغام نمایش میدم اگه یوزر برای بستن پیغام کلید Enter را بزنه این کلید به فرم منتقل میشه و فوکس دوبار جابه جا میشه

private static void txtBox_KeyUp(object sender, KeyEventArgs e)
{
var uie = e.OriginalSource as UIElement;
if (e.Key == Key.Enter)
{
e.Handled = true;
uie.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}


چیکار کنم کلیدی که در MessageBox زده میشه به فرم منتقل نشه؟

ESG_Esfahan
سه شنبه 25 خرداد 1395, 12:36 عصر
تا حالا کسی به این مشکل برنخورده :متفکر::متفکر:

rasol_afkham
پنج شنبه 03 تیر 1395, 04:25 صبح
شما MessageBox رو کجا فراخوانی می کنی. همان جا با یک شرط ببین کاربر کدام دکمه را کلیک کرده و دوباره طبق دکمه کلیک شده فوکس برنامه رو روی کنترل دلخواه قرا بده.

ESG_Esfahan
سه شنبه 08 تیر 1395, 10:07 صبح
شما MessageBox رو کجا فراخوانی می کنی. همان جا با یک شرط ببین کاربر کدام دکمه را کلیک کرده و دوباره طبق دکمه کلیک شده فوکس برنامه رو روی کنترل دلخواه قرا بده.
مرسی از پاسختون دوست عزیز
اولا اینکه من ی کدی نوشتم که به همه textbox ها یک رویداد keyup اضافه میکنه که اگر اکلید enter زده شد کنترل بعدی فوکوس بگیره و برای تغییر فوکوس برای هر کنترل جدا کد ننوشتم
و مشکل اینه که تو مثلا ی textbox را در نظر بگیرید در کنترل ی مقداری توسط کاربر وارد میشه و انتر میزنه بعد من در کد تست مقدار وارد شده طبق فرمول معتبر هست با نه و اگر دردست نبود ی پیغام نمایش میدم با استفاده از messagebox حالا اگه کاربر برای بستن messagebox دکمه ها را کلیک کنه هیچ مشکلی نداره ولی اگه کاربر کلید enter را بزنه messagebox بسته میشه و کلید انتر به فرم هم پاس داده میشه و رویداد keyup اجرا میشه

rasol_afkham
شنبه 12 تیر 1395, 23:10 عصر
شما می توانید تعیین کنید که اگر کاربر کلید Enter را فشار داد کدام دکمه کادر MessageBox کلیک شود. و با یک شرط ساده بررسی کنید که کدام دکمه کلیک شده. در ضمن همه رویداد ها پارامتری دارند به نام e و این پارامتر در بیشتر رویدادها خصوصیتی دارد به نام Handled که اگر مقدار این خصوصت را برابر با true کنید رویداد غیر فعال می شود. در ضمن با استفاده از کلمه کلید return هم می توانید رویداد را در همان نقطه متوقف کنید.