PDA

View Full Version : سوال: Keypress Event



hunter_ara
شنبه 01 مرداد 1390, 08:44 صبح
ميخاستم بدونم چطور ميشه روي keypress Event يك تكست باكس شرط گذاشت كه اگر مقدار ورودي عدد بود مشكلي نداره ولي اگر كاراكتر بود خودم handel كنم(e.handel). و در صورت وارد كردن ساين ها ( = / * + -) كار button
مشخصي رو انجام بده (نحوه ي ارجا به يك button)

اگر زودتر كمك كنيد ممنون ميشم :متفکر:

mehran_sh_t
شنبه 01 مرداد 1390, 10:15 صبح
می تونید از switch استفاده کنید، در رویداد keypress هر بار چک کنید مقدارتون رو، فک کنم 7 تا case می خواید، 5 تا برای اعمالی که گفتید، یکی برای اعداد (بین 0 تا 9) و یکی برای کاراکتر ها، یکی هم برای بقیه موارد (پرانتز و ...)
برای ارجاع هم، مثل فراخونی یک تابع می تونید handler دکمه مشخص رو صدا کنید و کاراکتر رو اضافه نکنید به تکست باکس
موفق باشید

flash118
شنبه 01 مرداد 1390, 11:19 صبح
با سلام دوست عزیز این کد ها از MSDN استفاده شده و تقریبا تمام اون چیزایی که شما میخواهید رو میدهالبته با یه روش دیگه که اگه نگاه کنید اون قسنت هایی که نیست دستتون میاد

// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Initialize the flag to false.
nonNumberEntered = false;

// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
// Determine whether the keystroke is a number from the keypad.
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if(e.KeyCode != Keys.Back)
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
}
}
}
//If shift key was pressed, it's not a number.
if (Control.ModifierKeys == Keys.Shift) {
nonNumberEntered = true;
}
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
// Check for the flag being set in the KeyDown event.
if (nonNumberEntered == true)
{
// Stop the character from being entered into the control since it is non-numerical.
e.Handled = true;
}
}

موفق باشید

payman_xxp
شنبه 01 مرداد 1390, 15:16 عصر
ممنون از كمكتون ازش ايده گرفتم فقط اگر ممكنه لينك msdn رو بديد كه خودم هم توضيحاتش رو ببينم ممنون ميشم
سلام
با اجازه دوستمون flash118 (http://barnamenevis.org/member.php?74702-flash118) این آدرسشه:
Control.KeyDown Event (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx)


موفق باشید.