PDA

View Full Version : سوال: TextBox فقط عدد بگیرد (بدون استفاده از KeyPress) (با استفاده از Class)



pishraft
یک شنبه 01 اسفند 1389, 00:05 صبح
سلام
خوبین؟
چطور میتونم بدون اسبفاده از KeyPress و با یه کلاس کاری کنم که TextBox بجز عدد و . حرف دیگه ای نگیره؟
مرسی

Mohsen229266
یک شنبه 01 اسفند 1389, 00:38 صبح
با سلام دوست عزیز منظورتون از "بدون استفاده از KeyPress" چیه بالاخره باید کلید فشرده شده رو بفهمیم چه کلیدی بوده که تشخیص عدد بودن یا نبودنشو بدم دیگه !!!؟
لطفا کمی در مورد سوالتون توضیح بدید تا منظورتونو متوجه بشیم

mehdi.mousavi
یک شنبه 01 اسفند 1389, 01:10 صبح
سلام
خوبین؟
چطور میتونم بدون اسبفاده از KeyPress و با یه کلاس کاری کنم که TextBox بجز عدد و . حرف دیگه ای نگیره؟
مرسی

سلام.
یک کلاس جدید ایجاد کنید، سپس اونو از TextBox مشتق کنید (به این کار میگن Subclass کردن TextBox)...
سپس اونجا متود OnKeyPress رو override کنید... هر جا هم از این مدل TextBox ها خواستید، باید کلاس
جدید ایجاد شده رو new کنید و ... برای مشاهده نمونه کد می تونید به این آدرس (http://msdn.microsoft.com/en-us/library/ms229644.aspx#Y114) رجوع کنید.

موفق باشید.

pishraft
یک شنبه 01 اسفند 1389, 08:14 صبح
منظورم از KeyPress این هست :


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
}


ممنون آقا مهدی ولی لینکی که فرستادین باز نمیشه
میشه بیشتر توضیح بدین؟
مرسی

ali_habibi1384
یک شنبه 01 اسفند 1389, 09:26 صبح
اور راید کردن:


protected override void OnKeyPress(KeyPressEventArgs e)

مشتق کرد کلاس:


public partial class Txt:System.Windows.Forms.TextBox

کد تایپ اعداد:


String ValidChars;
ValidChars = "0123456789.";
if (ValidChars.Contains(e.KeyChar) == false) e.KeyChar = Convert.ToChar(9);

سر هم کردنش هم با خودت

shuriken
یک شنبه 01 اسفند 1389, 10:51 صبح
البته د رکد بالا اگه بجای ValidChars از خود کلاس Char استفاده کنین بهتره.
از این متد استفاده کنین Char.IsNumber و بصورن جداگانه "." رو هم چک کنین
و این رو هم چک کنین که "." حداکثر یکبار بیاد

ali_habibi1384
یک شنبه 01 اسفند 1389, 11:50 صبح
البته د رکد بالا اگه بجای ValidChars از خود کلاس Char استفاده کنین بهتره.
از این متد استفاده کنین Char.IsNumber و بصورن جداگانه "." رو هم چک کنین
و این رو هم چک کنین که "." حداکثر یکبار بیاد
validchars کلاس نیست یک متغیر از نوع string تعریف کردم!

pishraft
یک شنبه 01 اسفند 1389, 12:29 عصر
سر هم کردنش هم با خودت

مرسی
راستش من نمیدونم چطور Override رو از Class فراخوانی کنم!
من تا حالا با این توابع کار نکرده بودم
میشه لطفا بیشتر توضیح بدید؟
مرسی
تازه کاری و کم تجربگیه :خجالت:

shuriken
یک شنبه 01 اسفند 1389, 12:41 عصر
بله میدونم
این رو به این دلیل گفتم که ممکنه از اعدادی در فرمتهای دیگه (مثل اعداد فارسی) استفاده بشه که در اون صورت
کد شما اونهارو رد میکنه ولی ساختار char خودش این موارد رو اصلاح میکنه.
در مورد override کردن هم اصلا کار سختی نیست به صورت زیر میشه در کلاس مشتق شده توابع کلاس پدر رو override کرد:
protected override [return value of method] [method name]

ali_habibi1384
یک شنبه 01 اسفند 1389, 13:17 عصر
بله میدونم
این رو به این دلیل گفتم که ممکنه از اعدادی در فرمتهای دیگه (مثل اعداد فارسی) استفاده بشه که در اون صورت
کد شما اونهارو رد میکنه ولی ساختار char خودش این موارد رو اصلاح میکنه.
در مورد override کردن هم اصلا کار سختی نیست به صورت زیر میشه در کلاس مشتق شده توابع کلاس پدر رو override کرد:
protected override [return value of method] [method name]
وقتی nonunicode فارسی هم بشه بصورت اتومات کی کدها رو به هم تبدیل میکنه یعنی رشته ای که در بالا نوشته شده برای فرسی هم قابل اجراست.امتحان کنید!

pishraft
یک شنبه 01 اسفند 1389, 14:01 عصر
میتونم خواهش کنم که بصورت کد کاملتر قرار بدید؟
من نتونستم ازش استفاده کنم :افسرده:

shuriken
یک شنبه 01 اسفند 1389, 14:40 عصر
این یه قسمت کوچیکشه


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
}
}

pishraft
یک شنبه 01 اسفند 1389, 15:01 عصر
مرسی
من با راهنماییای قبلی تا اینجا پیش اومده بودم ولی نمیدونم از این کد چطور استفاده کنم

m.soleimani
سه شنبه 03 اسفند 1389, 09:12 صبح
با توضیحاتی که دوستان دادن مشکل داری یا اصلن مشکلت حل نشده ؟


راستش من نمیدونم چطور Override رو از Class فراخوانی کنم!


override برای متدهایی استفاده می‌شه که به صورت virtual تعریف شده باشن و شما نیاز داری که توی تعریف اولیه اون‌ها دست ببری و برای خودت بهینه‌ترشون کنی امیدوارم خوب نوشته باشم موفق باشی./