PDA

View Full Version : Validation Pattern



hrbaban
شنبه 24 مهر 1389, 11:24 صبح
با سلام . . .

دوستان توی این بحث بیان و نظراتشون رو درباره روشهای اعتبارسنجی بیان کنند .


مثلا فرض کنید یه برنامه نوشتید که شامل 100 تا فرم هستش و توی اون از textbox های زیادی استفاده کردید و هر کدون یه محدوده و یه نوع خاصی از اطلاعات رو دریافت میکنند (مثلا یکی عدد میگیره و یکی دیگه فقط حروف خاص و . . .) حالا ما میخواهیم یه جوری این کار رو انجام بدیم که هر موقع بهمون گفتند مثلا تمام textbox های که تا دیروز حروف دریافت میکردند فقط بتونند از امروز عدد بگیرند .

شما چه راهی رو پیشنهاد میکنید ؟

hossein2007
شنبه 24 مهر 1389, 12:03 عصر
سلام دوست عزیز.

اتفاقا چند روز پیش درباره ساخت TextBox سفارشی بحث شد که شخصا چیزهای جالبی ازش یاد گرفتم.

کافیه که TextBox های سفارشی بسازید.
به عبارت بهتر TextBox هایی بسازید که از کنترل TextBox ارث بری کرده اند.

به کد زیر توجه کنید:


using System;
using System.Text;
using System.Windows.Forms;

namespace IntegratedSystem
{
class TextBox_SimpleDigit : TextBox
{
public TextBox_SimpleDigit()
{
if (!DesignMode)
{
this.KeyPress += new KeyPressEventHandler(TextBox_SimpleDigit_KeyPress) ;
}
}

void TextBox_SimpleDigit_KeyPress(object sender, KeyPressEventArgs e)
{
if (!DesignMode)
{
//Change Enter To Tab
if (e.KeyChar.Equals((char)(Keys.Enter)))
{
SendKeys.Send("{" + Keys.Tab + "}");
}
else
{
if (!(char.IsDigit(e.KeyChar) || e.KeyChar.Equals(Keys.Back)))
{
MessageBox.Show("عبارت ورودی بایست عدد غیر اعشاری باشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
e.Handled = true; //event cancel

return;
}
}
}
}
}
}
یه کلاس جدید به پروژتون اضافه کنید و کد های بالا رو توش بنویسید و بعد از کامپایل برنامه این textBox سفارشی رو درون Toolbox می بینید. و می تونید ازش استفاده کنید.

به این نکته هم توجه کنید که در لایه User Interface بررسی فقط در مورد تناسب نوع داده ورودی با مشخصه شی لایه Business Logic انجام شود و بقیه بررسی ها حتما در لایه Business Logic انجام شود.

امیدوارم مفید بوده باشه.