السلام عليكم
كيف يمكن وضع تنسيق معين داخل datagridview
مثال
عندى datagridview بها عمود أريد عند كتابة المستخدم مثلا رقم 12 يكون التنسيق 12:00:00
وإذا كتب 1 يكون التنسيق 1:00:00
وهو عبارة عن وقت
شكرا جزيلا
السلام عليكم ورحمة الله وبركاته
يتم ذلك في حدث
CellFormatting التابع لأداة الـ Datagridview :
كود :
Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting Try
If e.ColumnIndex = 1 Then ' نتحقق من أن العمود الذي يتم تحريره هو العمود المطلوب
If e.Value IsNot Nothing Then
If e.Value.ToString.Contains(":") = False Then
Dim val As String = e.Value
val = val & ":0"
e.Value = val
End If
Dim d As DateTime = DateTime.Parse(e.Value.ToString)
Dim time As String = d.ToString("hh:mm:ss")
e.Value = time
e.FormattingApplied = True
End If
End If
Catch ex As Exception
e.FormattingApplied = False
End Try
End Sub
قد توجد طرق أخرى مختصرة الأكواد فقط ابحث بالإنترنت .
****
***
**
*
ولكن هناك مشكلة عند كتابة 1230 سيكون الناتج 1230:00 ومن المفترض ان يكون 12:30:00
matrixmas كتب :ولكن هناك مشكلة عند كتابة 1230 سيكون الناتج 1230:00 ومن المفترض ان يكون 12:30:00
هل يوجد حل لهذة المشكلة ؟؟
ارجو مساعتى
السلام عليكم ،، ممكن مداخلتي ما تكون مفيده بتلك الدرجه و لكن حبيت انوه ،،،
في بعض الاحيان نواجه مشكله بخصوص شيء معين مثلا الوقت الذي تتكلم عنه ،، فسيكون حله باحدى الطريقتين ::
1) أن تتأكد من المدخلات ، اي من اين مصدر الوقت ،، و بذلك تجبر المستخدم على حفظ الوقت بالصيغه التي تريدها و بهذه انحلت مشكله ،، و عند استدعائها ستظهر بالشكل الذي تريده .
2) الحل الثاني : -و بالعاميه أعتبره حل ترقيع لان الحل يكمن بشكل صحيح فالنقطه الاولى و هو المثالي ، لان المدخلات الصحيحه يعني مخرجات سليمه - في حالة نص الوقت دائما اربع خانات من الممكن انت تستخدم دالة اقتصاص النص mid و تقتص اول رقمين من النص و تقتص اخر رقمين و تضع بينهما علامة نقطتين راسيه ،، و بكذا انحلت المشكله ،،
ملاحظه : اذا كان غير هذا فاذكر الحالات التي يمكن ظهور الوقت بها او حتى على الاقل مصدرها فمثلا اذا كانت ثلاث خانات سوف تتورط بدون مخرج كمثال 113،، ممكن تكون 11:3 او 1:13 و بذلك ادخلت نفسك بخوارزميات لا نهايه لها ،، لذلك تبقى الخطوه الأولى هي الاصح ،، و بذلك يترك لك خيار استخدام الأداة DateTimePicker و تغيير خاصية format الى custom و ثم تغير الخاصية customformat الى "hh:mm tt" و تغير الخاصية showUpDown الى true و تضع بجانبه زر عند الضغط على حفظ يضيفها الى الخلية المحدده في dataGraidview و بذلك تلاشيت الاستخدام الخاطئ للمستخدم ، .
تقبل ودي و احترامي
السكر المغرور كتب :السلام عليكم ،، ممكن مداخلتي ما تكون مفيده بتلك الدرجه و لكن حبيت انوه ،،،
في بعض الاحيان نواجه مشكله بخصوص شيء معين مثلا الوقت الذي تتكلم عنه ،، فسيكون حله باحدى الطريقتين ::
1) أن تتأكد من المدخلات ، اي من اين مصدر الوقت ،، و بذلك تجبر المستخدم على حفظ الوقت بالصيغه التي تريدها و بهذه انحلت مشكله ،، و عند استدعائها ستظهر بالشكل الذي تريده .
2) الحل الثاني : -و بالعاميه أعتبره حل ترقيع لان الحل يكمن بشكل صحيح فالنقطه الاولى و هو المثالي ، لان المدخلات الصحيحه يعني مخرجات سليمه - في حالة نص الوقت دائما اربع خانات من الممكن انت تستخدم دالة اقتصاص النص mid و تقتص اول رقمين من النص و تقتص اخر رقمين و تضع بينهما علامة نقطتين راسيه ،، و بكذا انحلت المشكله ،،
ملاحظه : اذا كان غير هذا فاذكر الحالات التي يمكن ظهور الوقت بها او حتى على الاقل مصدرها فمثلا اذا كانت ثلاث خانات سوف تتورط بدون مخرج كمثال 113،، ممكن تكون 11:3 او 1:13 و بذلك ادخلت نفسك بخوارزميات لا نهايه لها ،، لذلك تبقى الخطوه الأولى هي الاصح ،، و بذلك يترك لك خيار استخدام الأداة DateTimePicker و تغيير خاصية format الى custom و ثم تغير الخاصية customformat الى "hh:mm tt" و تغير الخاصية showUpDown الى true و تضع بجانبه زر عند الضغط على حفظ يضيفها الى الخلية المحدده في dataGraidview و بذلك تلاشيت الاستخدام الخاطئ للمستخدم ، .
تقبل ودي و احترامي
أخى الكريم شكرا جزيلا على مداخلتك
أفضل حل هو وضع أداة ال DateTimePicker ولكن فى حالة ان الداتا غريد تحتوى على أكثر من 100 صف فسوف يستغرق المستخدم وقت طويل جدا للإدخال تكون كتابة الصيغة أسهل يدويا من وجه نظرى