سلام
خوبین؟
چطور میتونم بدون اسبفاده از KeyPress و با یه کلاس کاری کنم که TextBox بجز عدد و . حرف دیگه ای نگیره؟
مرسی
سلام
خوبین؟
چطور میتونم بدون اسبفاده از KeyPress و با یه کلاس کاری کنم که TextBox بجز عدد و . حرف دیگه ای نگیره؟
مرسی
با سلام دوست عزیز منظورتون از "بدون استفاده از KeyPress" چیه بالاخره باید کلید فشرده شده رو بفهمیم چه کلیدی بوده که تشخیص عدد بودن یا نبودنشو بدم دیگه !!!؟
لطفا کمی در مورد سوالتون توضیح بدید تا منظورتونو متوجه بشیم
سلام.
یک کلاس جدید ایجاد کنید، سپس اونو از TextBox مشتق کنید (به این کار میگن Subclass کردن TextBox)...
سپس اونجا متود OnKeyPress رو override کنید... هر جا هم از این مدل TextBox ها خواستید، باید کلاس
جدید ایجاد شده رو new کنید و ... برای مشاهده نمونه کد می تونید به این آدرس رجوع کنید.
موفق باشید.
منظورم از KeyPress این هست :
privatevoid textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
}
ممنون آقا مهدی ولی لینکی که فرستادین باز نمیشه
میشه بیشتر توضیح بدین؟
مرسی
اور راید کردن:
protectedoverridevoid OnKeyPress(KeyPressEventArgs e)
مشتق کرد کلاس:
publicpartialclassTxt:System.Windows.Forms.TextBox
کد تایپ اعداد:
String ValidChars;
ValidChars = "0123456789.";
if (ValidChars.Contains(e.KeyChar) == false) e.KeyChar = Convert.ToChar(9);
سر هم کردنش هم با خودت
البته د رکد بالا اگه بجای ValidChars از خود کلاس Char استفاده کنین بهتره.
از این متد استفاده کنین Char.IsNumber و بصورن جداگانه "." رو هم چک کنین
و این رو هم چک کنین که "." حداکثر یکبار بیاد
مرسیسر هم کردنش هم با خودت
راستش من نمیدونم چطور Override رو از Class فراخوانی کنم!
من تا حالا با این توابع کار نکرده بودم
میشه لطفا بیشتر توضیح بدید؟
مرسی
تازه کاری و کم تجربگیه
بله میدونم
این رو به این دلیل گفتم که ممکنه از اعدادی در فرمتهای دیگه (مثل اعداد فارسی) استفاده بشه که در اون صورت
کد شما اونهارو رد میکنه ولی ساختار char خودش این موارد رو اصلاح میکنه.
در مورد override کردن هم اصلا کار سختی نیست به صورت زیر میشه در کلاس مشتق شده توابع کلاس پدر رو override کرد:
protected override [return value of method] [method name]
میتونم خواهش کنم که بصورت کد کاملتر قرار بدید؟
من نتونستم ازش استفاده کنم
این یه قسمت کوچیکشه
public class MyTextBox:System.Windows.Forms.TextBox
protected override void OnKeyPress(KeyPressEventArgs e)
{
if(Char.IsNumber(e.KeyChar)||(e.KeyChar == '.' && !this.Text.Contain("."))
{
//enter your syntax
}
}
مرسی
من با راهنماییای قبلی تا اینجا پیش اومده بودم ولی نمیدونم از این کد چطور استفاده کنم
با توضیحاتی که دوستان دادن مشکل داری یا اصلن مشکلت حل نشده ؟
override برای متدهایی استفاده میشه که به صورت virtual تعریف شده باشن و شما نیاز داری که توی تعریف اولیه اونها دست ببری و برای خودت بهینهترشون کنی امیدوارم خوب نوشته باشم موفق باشی./راستش من نمیدونم چطور Override رو از Class فراخوانی کنم!