20-12-12, 03:52 AM (آخر تعديل لهذه المشاركة : 20-12-12, 03:54 AM {2} بواسطة aboshosho.)
السلام عليكم أخواني في هذا المنتدى المبدع .
اواجه مشكلة في كتابة كود لإجبار المستخدم على كتابة تنسيق الوقت مثلاً الوقت 00:00:00 am
فعلى المستخدم أن يعدل فقط ما بين النقط : دون تحريرها أي عند كتابة الساعة يقفز عن العلامة : وينتقل الى الدقائق وهكذا
مع أن يكون العدد الخاص بالساعة 0< و >24 والثواني والدقائق نفس الشيء
و am و pm حصرا حتى لا يتم كتابة ارقام أو احرف أخرى
20-12-12, 03:17 PM (آخر تعديل لهذه المشاركة : 20-12-12, 03:24 PM {2} بواسطة kslawy.)
السلام عليكم ورحمة الله وبركاته
بدل ما تستخدم مربع نص TextBox واحد ، استخدم أربعة
[ATTACH=CONFIG]1590[/ATTACH]
المستطيلات باللون الأحمر مربعات نصوص Textbox بخلفية بيضاء وبدون BorderStyle
المستطيل الأزرق بانل Panel بخلفية بيضاء وبدون BorderStyle النقطتين فوق بعض أداتي Label
:: الـكـــــــــــود ::
[/CODE]
كود :
[b][SIZE=4]Public Class Form1[/SIZE][/b][b][SIZE=4]
[/SIZE][/b] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txt_Hr.MaxLength = 2
txt_Mint.MaxLength = 2
txt_Sec.MaxLength = 2
End Sub
#Region "Key Down"
Private Sub txt_Hr_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Hr.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Hr.Text)
If CurrValPlus = 12 Then
Exit Sub
End If
CurrValPlus += 1
txt_Hr.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Hr.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Hr.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_Mint_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Mint.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Mint.Text)
If CurrValPlus = 59 Then
Exit Sub
End If
CurrValPlus += 1
txt_Mint.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Mint.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Mint.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_Sec_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Sec.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Sec.Text)
If CurrValPlus = 59 Then
Exit Sub
End If
CurrValPlus += 1
txt_Sec.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Sec.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Sec.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_AmPm_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_AmPm.KeyDown
If e.KeyCode = Keys.Up Or e.KeyCode = Keys.Down Then
Dim CurrVal As String = txt_AmPm.Text
If CurrVal = "PM" Then
CurrVal = "AM"
Else
CurrVal = "PM"
End If
txt_AmPm.Text = CurrVal
End If
End Sub
#End Region
#Region "Key Press"
Private Sub txt_Hr_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Hr.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Hr)
End Sub
Private Sub txt_Mint_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Mint.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Mint)
End Sub
Private Sub txt_Sec_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Sec.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Sec)
End Sub
Private Function NumbersOnly(ByVal pstrChar As Char, ByVal oTextBox As TextBox) As Boolean
Return IIf(IsNumeric(pstrChar), False, True)
End Function
#End Region
#Region "Lost Focus"
Private Sub txt_Hr_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Hr.LostFocus
If txt_Hr.Text = "" Then
txt_Hr.Text = "00"
End If
End Sub
Private Sub txt_Mint_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Mint.LostFocus
If txt_Mint.Text = "" Then
txt_Mint.Text = "00"
End If
End Sub
Private Sub txt_Sec_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Sec.LostFocus
If txt_Sec.Text = "" Then
txt_Sec.Text = "00"
End If
End Sub
#End Region
End Class
حدث الـ KeyDown لاستخدام السهم العلوي والسفلي من الكيبورد لزيادة ونقصان القيم حدث الـ KeyPress لمنع كتابة أي قيم نصية فقط الرقمية حدث الـ LostFocus إذا كانت المربعات فارغة عند الخروج من الأداة يتم إضافة صفرين 00
المستطيلات باللون الأحمر مربعات نصوص Textbox بخلفية بيضاء وبدون BorderStyle
المستطيل الأزرق بانل Panel بخلفية بيضاء وبدون BorderStyle النقطتين فوق بعض أداتي Label
:: الـكـــــــــــود ::
[/CODE]
كود :
[b][SIZE=4]Public Class Form1[/SIZE][/b][b][SIZE=4]
[/SIZE][/b] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txt_Hr.MaxLength = 2
txt_Mint.MaxLength = 2
txt_Sec.MaxLength = 2
End Sub
#Region "Key Down"
Private Sub txt_Hr_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Hr.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Hr.Text)
If CurrValPlus = 12 Then
Exit Sub
End If
CurrValPlus += 1
txt_Hr.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Hr.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Hr.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_Mint_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Mint.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Mint.Text)
If CurrValPlus = 59 Then
Exit Sub
End If
CurrValPlus += 1
txt_Mint.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Mint.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Mint.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_Sec_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_Sec.KeyDown
If e.KeyCode = Keys.Up Then
Dim CurrValPlus As Integer = CInt(txt_Sec.Text)
If CurrValPlus = 59 Then
Exit Sub
End If
CurrValPlus += 1
txt_Sec.Text = String.Format("{0:00}", CurrValPlus)
End If
If e.KeyCode = Keys.Down Then
Dim CurrValMinus As Integer = CInt(txt_Sec.Text)
If CurrValMinus = 0 Then
Exit Sub
End If
CurrValMinus -= 1
txt_Sec.Text = String.Format("{0:00}", CurrValMinus)
End If
End Sub
Private Sub txt_AmPm_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_AmPm.KeyDown
If e.KeyCode = Keys.Up Or e.KeyCode = Keys.Down Then
Dim CurrVal As String = txt_AmPm.Text
If CurrVal = "PM" Then
CurrVal = "AM"
Else
CurrVal = "PM"
End If
txt_AmPm.Text = CurrVal
End If
End Sub
#End Region
#Region "Key Press"
Private Sub txt_Hr_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Hr.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Hr)
End Sub
Private Sub txt_Mint_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Mint.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Mint)
End Sub
Private Sub txt_Sec_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Sec.KeyPress
e.Handled = NumbersOnly(e.KeyChar, txt_Sec)
End Sub
Private Function NumbersOnly(ByVal pstrChar As Char, ByVal oTextBox As TextBox) As Boolean
Return IIf(IsNumeric(pstrChar), False, True)
End Function
#End Region
#Region "Lost Focus"
Private Sub txt_Hr_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Hr.LostFocus
If txt_Hr.Text = "" Then
txt_Hr.Text = "00"
End If
End Sub
Private Sub txt_Mint_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Mint.LostFocus
If txt_Mint.Text = "" Then
txt_Mint.Text = "00"
End If
End Sub
Private Sub txt_Sec_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Sec.LostFocus
If txt_Sec.Text = "" Then
txt_Sec.Text = "00"
End If
End Sub
#End Region
End Class
حدث الـ KeyDown لاستخدام السهم العلوي والسفلي من الكيبورد لزيادة ونقصان القيم حدث الـ KeyPress لمنع كتابة أي قيم نصية فقط الرقمية حدث الـ LostFocus إذا كانت المربعات فارغة عند الخروج من الأداة يتم إضافة صفرين 00
مرفق مثال vb.net 2008
****
***
**
*
[COLOR="#FF8C00"]بارك الله فيك أخي الكريم لردك المبدع , فعلاً لكل مبدع طريقة مبدعة , زادك من علمه وشكرا على المثال 100%