PDA

View Full Version : سوال: جلوگیری از اجرای رویداد



kiumarsknb
سه شنبه 22 تیر 1389, 16:17 عصر
سلام
من در برنامم از tabControl استفاده کردم. برای اینکه وقتی کاربر بخواد از یک سربرگ به سربرگ دیگه بره ی شرطی باید چک بشه تا اگر برقرار بود ، کاربر اجازه خروج از سربرگ جاری رو نداشته باشه. روی همین حساب بررسی شرط رو در متد رویداد Leave گذاشتم. من نخوام که اگر شرط درست بود رویداد اجرا نشه که کار بر رو به سریرگ منتقل کنه. میخوام جلوی اجرای رویداد رو در بدنه فرمان if بگیرم.
در ضمن
; e.cancel=trou کار نمیکنه اصلا Cancle نداره با return هم نتونستم جلوی اجراش رو بگیرم.


متشکرم

حجتی نیا
سه شنبه 22 تیر 1389, 16:46 عصر
سلام
من در برنامم از tabControl استفاده کردم. برای اینکه وقتی کاربر بخواد از یک سربرگ به سربرگ دیگه بره ی شرطی باید چک بشه تا اگر برقرار بود ، کاربر اجازه خروج از سربرگ جاری رو نداشته باشه. روی همین حساب بررسی شرط رو در متد رویداد Leave گذاشتم. من نخوام که اگر شرط درست بود رویداد اجرا نشه که کار بر رو به سریرگ منتقل کنه. میخوام جلوی اجرای رویداد رو در بدنه فرمان if بگیرم.
در ضمن
; e.cancel=trou کار نمیکنه اصلا Cancle نداره با return هم نتونستم جلوی اجراش رو بگیرم.


متشکرم
من اینطوری تو برنامم نوشتم : تو رویداد enter دیگر تب ها شرط چک میشه و اگه برقرار نباشه، تب فعال همون تب که توش هستیم انتخاب میشه

private void tab2_enter(...)
{
if(....)
tabControl.selectedtab=tabcontrol.tab1;
}

gwbasic
سه شنبه 22 تیر 1389, 17:17 عصر
شرط مورد نظر رو در رویداد Validating مربوط به tabpage مورد نظر بنویس و در صورت معتبر نبودن با e.Cancel=true جلوی آن را بگیر

kiumarsknb
چهارشنبه 23 تیر 1389, 03:27 صبح
سلام با تشکر از راهنمایی شما.
آقای حجتی نیا راه حل شما به خوبی کار کرد. ولی اگه تعداد سربرگ ها زیاد باشه چی؟ احتمالا ی راه حل دیگه بتونیم براش پیدا کنیم. به هر حال از راهنمایی gwbasic هم تشکر می‌کنم

kiumarsknb
پنج شنبه 24 تیر 1389, 16:02 عصر
ضمن عرض سلام خدمت دوستان
جواب سوال رو به گونه‌ای دیگر و کلی از فروم MSDN گرفتم اینجا هم میگذارم تا مورد استفاده دوستان عزیز قرار بگیره.

private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
tabControl1.TabPages[tabControl1.SelectedIndex].Focus();
tabControl1.TabPages[tabControl1.SelectedIndex].CausesValidation = true;

}


اگر شرطی که درام برقرار نبود اون وقت به کاربر اجازه تغییر سربرگ رو نمیده


private void tabPage1_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
if(!checkValidated.Checked)
e.Cancel = true;
}