اخواني الاعزاء
عندي داتاغريد فيو
كيف امنع المستخدم انو مايدخل شي غير الارقام فقط في اعمده محدده
يعني لا يدخل حرف ولا حتى مسافه space
في الاعمده 1,2,3,4 فقط ارقام
الداتا غريد فيو حجمها الاصلي 5 اعمده منها اجباري اربعه بس ارقام
اخواني الاعزاء
عندي داتاغريد فيو
كيف امنع المستخدم انو مايدخل شي غير الارقام فقط في اعمده محدده
يعني لا يدخل حرف ولا حتى مسافه space
في الاعمده 1,2,3,4 فقط ارقام
الداتا غريد فيو حجمها الاصلي 5 اعمده منها اجباري اربعه بس ارقام

السلام عليكم ورحمة الله وبركاته
-----------------------------
اولا : عليكي ان تعرفي المستخدم أن هذا العمود لا يقبل سوا أرقم وذلك عن طريق عمل format الى هذا العمود column واليكي هذا المثال
Dim dc As New DataGridViewTextBoxColumn With dc .HeaderText = "test" .ValueType = GetType(Decimal) .DefaultCellStyle.Format = "0.00" End With DataGridView1.Columns.Add(dc)
وخلال بحث في أحد المنتديات وجدت هذا الكود وقد قمت بأجراء بعض التغييرات عليه منها قنص الاحداث الخاصة ب textBox واستخدامها داخل dataGridView يعني الواحد يلف ويدور حتى يصل للغاية المرجوة من هيك شغلة ....
Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
Dim txtEdit As TextBox = e.Control
'remove any existing handler
RemoveHandler txtEdit.KeyPress, AddressOf txtEdit_Keypress
AddHandler txtEdit.KeyPress, AddressOf txtEdit_Keypress
End Sub
Private Sub txtEdit_Keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Console.WriteLine("KeyPress " & e.KeyChar.ToString())
'Test for numeric value or backspace in first column
If DataGridView1.CurrentCell.ColumnIndex = 0 Then
If IsNumeric(e.KeyChar.ToString()) _
Or e.KeyChar = ChrW(Keys.Back) _
Or e.KeyChar = "." Then
Console.WriteLine("KeyPress number")
e.Handled = False 'if numeric display
Else
Console.WriteLine("Enter Numbers Only")
e.Handled = True 'if non numeric don't display
End If
End If
End Subوالسلام خير ختاااام
رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ
للاسف اخوي لم ينجح معي
انظر اخوي الى الكود التالى
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Try If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True End If Dim ch As Char ch = e.KeyChar If ch.IsDigit(ch) = True Or ch.GetHashCode = 524296 Then e.Handled = False Else e.Handled = True End If Catch ex As OleDbException MessageBox.Show(ex.Message) End Try End Sub
هذا الكود اللى كنت استخدمه في التكس بوكس وكان يعطي المطلوب وهو عدم ادخال اي شي غير الارقام يعني حتى space مايقبل
المطلوب مثله بس على الاعمده رقم 2 , 3 , 4 في الداتا غريد فيو

الاخ المبدع codehunter
في البداية يعطيك العافية على مبادرتك والرد على لانو بصراحه صار لى شهر وانا انتظر الاجابة
اما بالنسبة للرابط
انا جربته من قبل
ولكن البرنامج نفسه غير نازل بالكامل
يعني بيعطيني انو في ملفات مفقوده فيه
فاتمنى انك تنزله تاني مره ولك جزيل الشكر
او ادا عندك الحل لمساعدتي اتمنى تنزله كمرفق هنا انو انك تكتب الحل مع الشرح
مشكوره اخوي اكتير
ويعطيك الف عافية

السلام عليكم ...
-------------------
أختي الكريمة ....
اليكي الحل ولكن ما أريده منك هو شوية تركيز يعني سبيكي من الاكل هادي الساعة .... الله يرضى عنا وعنك ..
اولاً ما هي الاحداث : هي مؤشرات إلى أجراءات تقليدية يتم استدعائها لحظة وقوع حدث معين ...
أنتي تعرفي ... كيف يمكننا قنص الاحداث .. يعني تطويع حدث معين لاجل شغلة أخرى ...
بدك أكتر خدي عندك ..
لقنص الحدث نستخدم الكلمة المحجوزة withEvents او الكلمة المحجوزة AddHandler بما أنه نحن نريد تنفيذ اجراء لحظة اطلاق الحدث فلعلينا أن نستخدم الكلمة المجوزة addHandler
لنفترض أنه عندك textBox ولا تريدين أن تدخلي بها إلا أرقام فقط الحل بسيط وهو كالتالي
Dim C As Char = e.KeyChar If Not (Char.IsDigit(C) Or Char.IsControl(C)) Then e.Handled = True My.Computer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep) End If
طبعا نضع هادا الكود داخل الحدث KeyPress
وبما أننا نريد تطويع الحدث المذكووور أعلاه لكي نستخدمه في DataGridview فعلينا فعل التالي
Private Sub txtTelNo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelNo.KeyPress If DataGridView1.CurrentCell.ColumnIndex = 6 Then Dim C As Char = e.KeyChar If Not (Char.IsDigit(C) Or Char.IsControl(C)) Then e.Handled = True My.Computer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep) End If End If End Sub
لاحظي جيدا ما قمت بكتابته في الاعلى وهو
If DataGridView1.CurrentCell.ColumnIndex = 6 Then
وهو العمود السادس (خلي بالك العد يبدأ من الصفر .... الحكاية مصفوفات )
والان كيف نجعل العموود Column داخل dataGridview لا يقبل الا أرقام
بكتب الأتي
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing If TypeOf e.Control Is TextBox Then Try RemoveHandler e.Control.KeyPress, AddressOf txtTelNo_KeyPress Catch ex As Exception End Try AddHandler e.Control.KeyPress, AddressOf txtTelNo_KeyPress End If End Sub
المثال في المرفقات
العمود الذي لا يقبل الا ارقام هو العمود السلدس "الوحدات الموجودة بالمخزن"
وهلقيت ما بقى الا دعواكم
وبالتوفيق أن شاء الله
والسلام خير ختاااااااااااام
تم تعديل هذه المشاركة بواسطة فلسطيننا في 22 يناير 2007 في 17:14
رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ
الأخت الفاضل ...
أرجوا ان يساعدك هذا المثال فى ما تريد انجازه
بإستخدام (MS-VB 6.0)
CustomDataGrid.zip ( 10.33k )
وشكراً
Nothing is impossible, the word impossible itself says that: I M - Possible
الاخ فلسطيننا مشكوره على ردك
بالفعل انتا انسان اكثر من رائع
انما فهمت من المثال المكتوب بالاعلى وطبقته واشتغل معي وفكرته اكثر من رائعه
بينما المرفق للاسف لم يعمل معي
الاخ المهندس يوسف
يعطيك العافيه بس للاسف المطلوب على الدوت نت
الاخ code hunter
مشكوره على ردك
وجاري التحميل لمثالك لتجربته
يعطيك العافية شباب والله ماقصرتوا

اختي الكريمة ما المشكلة في المثال المرفق ...
ان كانت المشكلة تخص الاتصال فعليك الذهاااب إلى خصائص المشروع الحالي وعمل له Properties ومن ثم الذهاب إلى خانة الsettings الخاصة بأعدادات المشروع الحالي ومنها قومي بتحويل الأتصال الموجود إلى الاسم الموجود عندك
على كلا الحمد لله أنك فهمتي وجربت وعمل معك ...
رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ
اخي الكريم مشكوور على مرورك ...
بالنسبة للمثال أنا مجربووا عندي وشغال 100% وما بينته أنفا ... وهو نتيجة أختلاف إسم Server
وهلقيت قمت بتجربته ...
تأكد جيدا أنك حملته وقمت بتجربته ....
رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ
هذا الموضوع مغلق.