كيفية ترقي ال RowHeader فى ال DataGridView
بعد التحية
أقدم لكم طريقة لترقيم ال RowHeader فى ال DataGridView
الطريقة التى قدمتها ميكروسوفت فى مثالها هى برسم String يحتوى على أرقام بعدد صفوف ال DataGridView
داخل ال RowHeader وفى هذه الطريقة يجب ان تحدد مكان الرسم بأستخدام X,Y حتى تضع الرقم المرسوم فوق ال RowHeader
ومن وجهة نظرى الشخصية لم تعجبنى هذه الطريقة وكانت كالتالى
فى الحدث RowPostpaint لل DataGridView
Private Sub dataGridView1_RowPostPaint(ByVal sender As Object, _ ByVal e As DataGridViewRowPostPaintEventArgs) _ Handles dataGridView1.RowPostPaint ' Paint the row number on the row header. ' The using statement automatically disposes the brush. Using b As SolidBrush = New SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor) e.Graphics.DrawString(e.RowIndex.ToString(System.Globalization.CultureInfo.CurrentUICulture), _ dataGridView1.DefaultCellStyle.Font, _ b, _ e.RowBounds.Location.X + 20, _ e.RowBounds.Location.Y + 4) End Using End Sub
ولكنى أستخدمت طريقة أفضل من وجهة نظرى لترقيم ال RowHeader وهى كالتالى
اولاُ نقوم بأنشاء روتين للترقيم كالتالى
Sub GiveNumber() For i As Integer = 0 To Dgrd.Rows.Count - 1 If Dgrd.Rows.Count > 1 Then Dgrd.Rows(i).HeaderCell.Value = i.ToString End If Next End Sub
ويتم أستدعاؤه من كلً من الحدثين RowsAdded و RowsRemoved كما فى الكود التالى
Private Sub Dgrd_RowsAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles Dgrd.RowsAdded GiveNumber() End Sub Private Sub Dgrd_RowsRemoved(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsRemovedEventArgs) Handles Dgrd.RowsRemoved GiveNumber() End Sub
الحدث الأول RowsAdded عند ملئ ال DataGridView بالقيم يتم تنفيذ هذا الحدث وبالتالى يستدعى روتين الترقيم
اما فى الحدث الآخر فعندما يقوم المستخدم بحذف سطر من ال DataGridView يتم أستدعاؤه لتحديث الترقيم بعد الحذف
وأضفت روتين آخر لألغاء الترقيم أذا أراد أحد ألغاء الترقيم وهو لا يختلف عن الروتين الأول كل ما عليه ان يضع بدلاً من الأرقام مسافات خالية كالتالى
Sub RemoveNumber() For i As Integer = 0 To Dgrd.Rows.Count - 1 If Dgrd.Rows.Count > 1 Then Dgrd.Rows(i).HeaderCell.Value = "" End If Next End Sub
ويمكن أستدعاء هذا الروتين من مفتاح تقوم بأنشائه على الفورمه لألغاء الترقيم
على العموم فى المثال كل ما ذكرت وأيضاً بالمثال طريقة أخفاء ال RowHeader وأظهاره
دعواتى لكم بالتوفيق وأسألكم الدعاء.............