تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
هل يمكن إجبار المستخدم على كتابة تنسيق الوقت بالشكل التالي
#1
السلام عليكم أخواني في هذا المنتدى المبدع .


اواجه مشكلة في كتابة كود لإجبار المستخدم على كتابة تنسيق الوقت مثلاً الوقت 00:00:00 am
فعلى المستخدم أن يعدل فقط ما بين النقط : دون تحريرها أي عند كتابة الساعة يقفز عن العلامة : وينتقل الى الدقائق وهكذا
مع أن يكون العدد الخاص بالساعة 0< و >24 والثواني والدقائق نفس الشيء
و am و pm حصرا حتى لا يتم كتابة ارقام أو احرف أخرى
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

بدل ما تستخدم مربع نص 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

مرفق مثال vb.net 2008

****
***
**
*


الملفات المرفقة صورة/صور
   

.rar   TimeControl.rar (الحجم : 45.34 ك ب / التحميلات : 30)
(وَقُل رَّبِّ زِدْنِي عِلْمًا)

الرد }}}}
تم الشكر بواسطة:
#3
استخدم اداة MaskedTextBox ومن خيار SetMask اختر Time
الرد }}}}
تم الشكر بواسطة:
#4
بارك الله فيكم وزادكم من علمه
الرد }}}}
تم الشكر بواسطة:
#5
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

مرفق مثال vb.net 2008

****
***
**
*





[COLOR="#FF8C00"]بارك الله فيك أخي الكريم لردك المبدع , فعلاً لكل مبدع طريقة مبدعة , زادك من علمه وشكرا على المثال 100%

[/COLOR]
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] تغير لون كتابة التيكست بوكس ؟ Mido9 5 2,357 30-11-16, 10:16 PM
آخر رد: omferas
  كيفيه تشغيل الفورم بالتاريخ الذي يحدده المستخدم ddemed 5 119 23-11-16, 10:12 PM
آخر رد: السرور
  هل يمكن انشاء صفحة متصفح Mohamed20 2 128 20-11-16, 12:38 AM
آخر رد: myalsailamy
  كيف يمكن اضافة مجموعة حقول الي datagridview والتعديل عليها مباشرتا dark1459 2 67 15-11-16, 10:30 PM
آخر رد: السرور
  كيف يمكن عمل هذا الترتيب rabeh.ram 10 200 15-11-16, 03:11 AM
آخر رد: rabeh.ram
  [سؤال] هل يمكن عرض عناصر الكومبوبوكس عن طريق الكود ؟؟؟؟؟؟؟؟؟؟؟؟ thevirus 1 96 10-11-16, 06:25 PM
آخر رد: أبو عمر
  [VB.NET] سؤال كيف يمكن معرفة التغير في قاعدة البيانات وليد الزنتاني 2 109 10-11-16, 01:20 AM
آخر رد: وليد الزنتاني
  هل يمكن ان تتصل بقاعدة بيانات SQL من دون سيرفر اي اتصال مباشر مثل Access thevirus 4 110 09-11-16, 07:10 PM
آخر رد: thevirus
  كيف يمكن الذهاب لصف جديد فى الداتا جريد فيو walkady 0 66 06-11-16, 11:31 PM
آخر رد: walkady
  [سؤال] جعل المستخدم يحدد عنوان اي بي السيرفر الذي عليه قاعدة البيانات thevirus 0 56 04-11-16, 10:38 AM
آخر رد: thevirus

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم