بخصوص هذا الامر كل ما عليك اضافة هذا الـ
Function
كود :
Function GetTotalTime(ByVal dgv As DataGridView, ByVal iRows As Integer, Optional iRmove As Integer = 2)
Dim sumtime As TimeSpan = New TimeSpan
For i As Integer = 0 To dgv.RowCount - iRmove
Dim MTime As String() = dgv.Rows(i).Cells(iRows).Value.ToString.Split(":")
sumtime += TimeSpan.FromSeconds(Val((MTime(0) * 60) * 60)) + TimeSpan.FromSeconds(Val(MTime(1) * 60)) + TimeSpan.FromSeconds(MTime(2))
Next
Dim mtTotalTime As String = sumtime.Hours.ToString("00") & ":" & sumtime.Minutes.ToString("00") & ":" & sumtime.Seconds.ToString("00")
Return mtTotalTime
End Function
الان ناتى فى حدث اللود الفورم أو الزر حسب ما تريد اتمام تنفيذ كود اجمالى الوقت
وقم بوضع الكود كمثال التالى
كود :
Label1.Text = GetTotalTime(DataGridView1, 0)
كن معايا هنا كده عشان توضح معك الامر جيداً
حتى تتجنب اى خطاء قد يحدث معك
الـ GetTotalTime يتطلب 3 قيم
القيمة الاولى وهو اسم الداتا جريد
القيمة الثانية وهو رقم العمود الذى يحتوى على الوقت
القيمة الثالثة اختيارى لعدد الصفوف التى سيتم تخطيها فى عملية For
الكود الفعلى للامر هو
كود :
GetTotalTime(DataGridView1, 0, 2)
حيث DataGridView1 هو اسم الداتا جريد لديك
ورقم 0 هنا يشير الى ترتيب رقم العمود الذى يحتوى على الوقت تذكر ان العد يبداء من 0 وليس 1
يعنى لو العمود كان رقم 4 من حيث العد برقم 1 يبقي هنا المقصود به ان العمود رقم 3 فيكتب بدلاً من 0
ورقم 2 هنا اختياري لا يلزم كتابته
ولكن سيتم كتابته بدلاً منه رقم 1 اذا كان الداتا جريد لا يدعم الاضافة اليدوية
بمعنى انه معطل خاصية ادخال البيانات من خلال المستخدم كا كتابة بالداتا جريد
وهو يخص عملية
For لهذا الكود
كود :
For i As Integer = 0 To DataGridView1.RowCount - 2
فاذا كان عملية الاضافة معطلة بالداتا جريد
فهنا سيلزم عليك جعل الامر بهذا الشكل
كود :
Label1.Text = GetTotalTime(DataGridView1, 0, 1)
اتمنى يكون الشرح مبسط لك
وان يكون الامور كاملة معك الان
عند تنفيذ الكود على الصورة ستجد يتم جلب الاجمالى
تحياتى لك
وتمنياتى لك التوفيق