03-10-12, 02:15 PM
كاتب الموضوع : المؤمنة
الدرس: طريقة محاكاة KeyASCII في Keypress .. تقييمه: للمبتدئين ...إعداد: فرحناز سجّاد حسين فاضل
النسخة: 2003
____________________________________________
كنا زمان مع الvb6 عندما نريد معرفة الحرف المضغوط نستخدم الحدث Keypress ,, ونستخدم الخاصية keyASCII والتي تمرر كوسيط ,,
والآن في الفي بي دوت نت ,, لاتمرر هذه الخاصية كوسيط وإنما هنالك طرق أخرى ,, من بينها KeyChar و KeyCode ,,
والأولى عاملة مع الحدث Keypress ,, وهذه الخاصية هي تابعة e الوسيط الثاني في الأحداث وهو من نوع EventArgs أي "Event Arguments"
وهذه الخاصية - اقصد KeyChar - تحتفظ بالحروف والأرقام والمفاتيح الأخرى مثل [Enter] , [Alt] وغيرها ,, ومثال لها
كود :
Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress
If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then
MsgBox("you press Enter!")
End If
End Sub
كود :
Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress
If Asc(e.KeyChar) = 13 Then
MsgBox("you press Enter!")
End If
End Sub
فعندما يراد إنهاء عمل حدث PressKey فإننا كنا في vb6 كنا نسند القيمة صفر إلى الوسيط KeyASCII ,,
ولكن في في بي دوت نت الطريقة تختلف ,, لأن الحدث ينتهي عند إسناد القيمة True ل e.Handled
وإذا نريد أن نحاكي الطريقة القديمة نفسها ,, ببعض الحرافة يمكننا ذلك ,, نعرف متغير من نوع Short ونهيئه بالقيمة التالية
كود :
Asc(e.KeyChar)
كما في المثال التالي:
كود :
Private Sub Text1_KeyPress(ByVal eventSender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
KeyAscii = MyValue
KeyAscii = 0
If KeyAscii = 0 Then
eventArgs.Handled = True
End If
End Sub
اتمنى أني توفقت في إيصال المعلومة ...
تحياتي ...