06-10-12, 12:23 AM
مثال رقم 1 كيفية استخدام الكلاس Students مع DataGridView
كل ما علينا فعله أن نضيف الي الفورم DataGridView Control وفي الحدث Load الخاص بالفورم نقوم بربط وتعريف الكلاس Students علي أنه DataSource الذي يخص هذا DataGridView ومن ثم نضع الأسماء والأرقام المسلسلة في Array والكود التالي يوضح كيفية ربط الكلاس مع DataGridViw1 التي أضفناها الي الفورم
هناك مجموعة من الملاحظات الطريفة التي يجب أخذها في الاعتبار عند كتابة الكلاس Students
من الملاحظات الطريفة جدا في الكود اعلاه هو ترتيب الصفات Properties سنجد أن أول صفة هي الرقم المسلسل ID ثم الإسم الثاني ثم الإسم الأول ثم الإسم كاملا في الواقع هذا الترتيب مهم جدا وستري السبب عزيزي القارئ عندما نحاول أن نربط الكلاس Students مع بعض الكونترول وتحديدا DataGridView ستكتشف أن DatagridView سيعرض كل Property طبقا لترتيبها في الكلاس Students
من الملاحظات الطريفة أيضا سنجد أن DataGridView كونترول يعرض الأسماء في Header Columns كما تم كتابتها مثلا يعرض كلمة FullName كما هي إذن كيف نقوم بإظهار أسماء الأعمدة بشكل صحيح
لمن تابع الدروس الخاصة بموضوع تطوير الكونترول وتحديدا الموضوع الذي تحدثنا فيه عن Property Attributes ولقد ذكرت في هذا الموضوع أحد Attributes الهامة وهي DisplayName Attribute التي تسمح لنا بإضافة أي اسم نختاره الي Property وهي عبارة عن String
مثلا لو قمنا بإضافة هذه Attribute الي أي Property موجودة داخل الكلاس Studentsفإن الإسم الذي سنضعه فيها هو الذي سيتم عرضه داخل DataGridView Header Column
الكود التالي يوضح كيفية إضافة هذه Attribute إلي Property حيث أن كلمة "رقم" هي التي سوف تظهر داخل DatagridView1 Header Column
مثال رقم 2 كيفية استخدام الكلاس Students مع ListView Control
في هذا المثال سنوضح كيف نربط بين الكلاس Student و ListView Control لذلك نضيف الي المشروع فورم جديد ونضيف لهذا الفورم أربعة من TextBox ثم نضيف أيضا ListView
والكود التالي يوضح الأمر
مثال رقم 3 كيفية استخدام الكلاس Students مع ComboBox Control
في هذا المثال سنوضح كيف نربط بين الكلاس Student و ComboBox Control لذلك نضيف الي المشروع فورم جديد ونضيف لهذا الفورم TextBox ثم نضيف أيضا ComboBox
والكود التالي يوضح الأمر
هذه كانت مجرد أفكار بسيطة وسريعة عن كيفية الاستغناء عن ملفات الداتا بيز وخصوصا عندما نحتاج فقط أن نعرض البيانات بصورة بيانات Read-Only داخل الفورم وتحديدا عندما لا نحتاج من المستخدم أن يقوم بالتعديل في البيانات
وأعتقد عزيزي القارئ يمكنك الأن أن تتبع نفس الأسلوب وتضيف هذا النوع من البيانات بسهولة الي الفورم أو الي أي كونترول حاول تجرب كيف تفعل ذلك مع الكونترول الأخري مثل TreeView و ListView الي أخره من الكونترول التي من الممكن استخدامها لعرض بيانات
يمكنك انزال الكود كاملا من المرفقات الكود تم تنفيذه باستخدام نسخة الفيجوال استوديو 2008
بالتوفيق
أخوكم عمر
كل ما علينا فعله أن نضيف الي الفورم DataGridView Control وفي الحدث Load الخاص بالفورم نقوم بربط وتعريف الكلاس Students علي أنه DataSource الذي يخص هذا DataGridView ومن ثم نضع الأسماء والأرقام المسلسلة في Array والكود التالي يوضح كيفية ربط الكلاس مع DataGridViw1 التي أضفناها الي الفورم
كود :
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' do not allow user to write or delete data by
' make the dtagridview for readonly
DataGridView1.ReadOnly = True
' binding Students class to Datagridview
Dim StudentArray() As Students = _
{New Students(1, "عمرو", "أمين"), _
New Students(2, "أحمد", "عبدالله"), _
New Students(3, "محمود", "المصري")}
DataGridView1.DataSource = StudentArray
' Adjust the width of first Column in DataGridView
With DataGridView1.Columns(0)
.Width = 30
End With
End Sub
End Classمن الملاحظات الطريفة جدا في الكود اعلاه هو ترتيب الصفات Properties سنجد أن أول صفة هي الرقم المسلسل ID ثم الإسم الثاني ثم الإسم الأول ثم الإسم كاملا في الواقع هذا الترتيب مهم جدا وستري السبب عزيزي القارئ عندما نحاول أن نربط الكلاس Students مع بعض الكونترول وتحديدا DataGridView ستكتشف أن DatagridView سيعرض كل Property طبقا لترتيبها في الكلاس Students
من الملاحظات الطريفة أيضا سنجد أن DataGridView كونترول يعرض الأسماء في Header Columns كما تم كتابتها مثلا يعرض كلمة FullName كما هي إذن كيف نقوم بإظهار أسماء الأعمدة بشكل صحيح
لمن تابع الدروس الخاصة بموضوع تطوير الكونترول وتحديدا الموضوع الذي تحدثنا فيه عن Property Attributes ولقد ذكرت في هذا الموضوع أحد Attributes الهامة وهي DisplayName Attribute التي تسمح لنا بإضافة أي اسم نختاره الي Property وهي عبارة عن String
مثلا لو قمنا بإضافة هذه Attribute الي أي Property موجودة داخل الكلاس Studentsفإن الإسم الذي سنضعه فيها هو الذي سيتم عرضه داخل DataGridView Header Column
الكود التالي يوضح كيفية إضافة هذه Attribute إلي Property حيث أن كلمة "رقم" هي التي سوف تظهر داخل DatagridView1 Header Column
كود :
<DisplayName("رقم")> _
Public Property ID() As Integer
Get
Return m_ID
End Get
Set(ByVal value As Integer)
m_ID = value
End Set
End Propertyفي هذا المثال سنوضح كيف نربط بين الكلاس Student و ListView Control لذلك نضيف الي المشروع فورم جديد ونضيف لهذا الفورم أربعة من TextBox ثم نضيف أيضا ListView
والكود التالي يوضح الأمر
كود :
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' مجموعة من التكست بوكس تم استخدامها لإستعراض البيانات
TextBox1.ReadOnly = True
TextBox2.ReadOnly = True
TextBox3.ReadOnly = True
TextBox4.ReadOnly = True
' حيث اننا نستخدم أسماء عربية من الأفضل ضبط خاصية من اليمين الي اليسار
ListBox1.RightToLeft = Windows.Forms.RightToLeft.Yes
TextBox1.RightToLeft = Windows.Forms.RightToLeft.Yes
TextBox2.RightToLeft = Windows.Forms.RightToLeft.Yes
TextBox3.RightToLeft = Windows.Forms.RightToLeft.Yes
TextBox4.RightToLeft = Windows.Forms.RightToLeft.Yes
' إضافة الكلاس الي الليست بوكس كونترول
Dim AmrAmin As New Students(1, "عمرو", "أمين")
Dim OmarAmin As New Students(2, "عمر", "أمين")
Dim AhmedMoustafa As New Students(3, "أحمد", "مصطفي")
Dim LilalElmasry As New Students(4, "ليلي", "المصري")
Dim HananElmasry As New Students(5, "حنان", "المصري")
Dim SamahElmasry As New Students(6, "سماح", "المصري")
Dim EmanElmasry As New Students(7, "إيمان", "المصري")
Dim SalmaElmasry As New Students(8, "سلمي", "المصري")
Dim SafwatElmasry As New Students(9, "صفوت", "المصري")
Dim SalemElmasry As New Students(10, "سالم", "المصري")
ListBox1.DisplayMember = "FullName"
' أضف جميع العناصر
ListBox1.Items.Add(AmrAmin)
ListBox1.Items.Add(OmarAmin)
ListBox1.Items.Add(AhmedMoustafa)
ListBox1.Items.Add(LilalElmasry)
ListBox1.Items.Add(HananElmasry)
ListBox1.Items.Add(SamahElmasry)
ListBox1.Items.Add(EmanElmasry)
ListBox1.Items.Add(SalmaElmasry)
ListBox1.Items.Add(SafwatElmasry)
ListBox1.Items.Add(SalemElmasry)
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
' تغيير البيانات في التكست بوكس بناء علي اختيار المستخدم
TextBox1.Text = (CType(ListBox1.SelectedItem, Students).ID)
TextBox2.Text = (CType(ListBox1.SelectedItem, Students).FirstName)
TextBox3.Text = (CType(ListBox1.SelectedItem, Students).SecondName)
TextBox4.Text = (CType(ListBox1.SelectedItem, Students).FullName)
End Sub
End Classفي هذا المثال سنوضح كيف نربط بين الكلاس Student و ComboBox Control لذلك نضيف الي المشروع فورم جديد ونضيف لهذا الفورم TextBox ثم نضيف أيضا ComboBox
والكود التالي يوضح الأمر
كود :
Public Class Form3
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.ReadOnly = True
Dim AmrAmin As New Students(1, "عمرو", "أمين")
Dim OmarAmin As New Students(2, "عمر", "أمين")
Dim AhmedMoustafa As New Students(3, "أحمد", "مصطفي")
Dim LilalElmasry As New Students(4, "ليلي", "المصري")
ComboBox1.Items.Add(AmrAmin.FullName)
ComboBox1.Items.Add(OmarAmin.FullName)
ComboBox1.Items.Add(AhmedMoustafa.FullName)
ComboBox1.Items.Add(LilalElmasry.FullName)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TextBox1.Text = ComboBox1.SelectedItem
End Sub
End Classوأعتقد عزيزي القارئ يمكنك الأن أن تتبع نفس الأسلوب وتضيف هذا النوع من البيانات بسهولة الي الفورم أو الي أي كونترول حاول تجرب كيف تفعل ذلك مع الكونترول الأخري مثل TreeView و ListView الي أخره من الكونترول التي من الممكن استخدامها لعرض بيانات
يمكنك انزال الكود كاملا من المرفقات الكود تم تنفيذه باستخدام نسخة الفيجوال استوديو 2008
بالتوفيق
أخوكم عمر
