amir_pro
جمعه 07 دی 1386, 02:13 صبح
سلام به دوستان
من کلاس زیر را نوشتم و خاصیتی برای اون گذاشتم به نام MaxValue که اگر کاربر متنی را که داخل textBox وارد می کند بیشتر ازاین مقدار بود جلوی وارد کردن گرفته شود.
کد کلاس در زیر آمده است.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace NumericTextBox
{
public class NumericTextBox : TextBox
{
public NumericTextBox()
{
}
public string MX_Value;
public string MaxValue
{
get
{
return MX_Value;
}
set
{
MX_Value = value;
}
}
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
this.BackColor = Color.LemonChiffon;
this.SelectAll();
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
this.BackColor = Color.White;
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar)))
{
e.Handled = true;
}
}
}
}
و کد زیر را هم برای رویداد TextChanged مربوط به textbox قرار دادم.
if (numericTextBox1.Text != "")
{
if (Convert.ToInt32(numericTextBox1.Text) > Convert.ToInt32(numericTextBox1.MaxValue))
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
حالا میخوام اگر مقدار متن وارده بیشتر از مقدار خاصیت maxvalue بود جلوی وارد کردن گرفته بشه.
به نظر دوستان چیکار باید بکنم؟
آیا می شود کد کنترل کردن را داخل کلاس نوشت و از آنجا جلوی اجرا شدن رویدادی را گرفت؟
من کلاس زیر را نوشتم و خاصیتی برای اون گذاشتم به نام MaxValue که اگر کاربر متنی را که داخل textBox وارد می کند بیشتر ازاین مقدار بود جلوی وارد کردن گرفته شود.
کد کلاس در زیر آمده است.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace NumericTextBox
{
public class NumericTextBox : TextBox
{
public NumericTextBox()
{
}
public string MX_Value;
public string MaxValue
{
get
{
return MX_Value;
}
set
{
MX_Value = value;
}
}
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
this.BackColor = Color.LemonChiffon;
this.SelectAll();
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
this.BackColor = Color.White;
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar)))
{
e.Handled = true;
}
}
}
}
و کد زیر را هم برای رویداد TextChanged مربوط به textbox قرار دادم.
if (numericTextBox1.Text != "")
{
if (Convert.ToInt32(numericTextBox1.Text) > Convert.ToInt32(numericTextBox1.MaxValue))
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
حالا میخوام اگر مقدار متن وارده بیشتر از مقدار خاصیت maxvalue بود جلوی وارد کردن گرفته بشه.
به نظر دوستان چیکار باید بکنم؟
آیا می شود کد کنترل کردن را داخل کلاس نوشت و از آنجا جلوی اجرا شدن رویدادی را گرفت؟