مقدمة عن VB.NET
ما هو VB.NET؟
VB.NET (Visual Basic .NET) هي لغة برمجة كائنية التوجه من Microsoft، جزء من منصة .NET Framework.
مميزات VB.NET:
- لغة بسيطة وسهلة التعلم
- مثالية لتطوير تطبيقات Windows
- دعم كامل للبرمجة الكائنية
- تكامل مع Visual Studio
- مكتبة .NET Framework غنية
مجالات الاستخدام:
- تطبيقات Windows Desktop
- تطبيقات قواعد البيانات
- تطبيقات الويب (ASP.NET)
- خدمات الويب
بيئة التطوير Visual Studio
تثبيت Visual Studio:
- قم بتحميل Visual Studio من موقع Microsoft
- اختر "Desktop development with .NET"
- ثبت Visual Studio
إنشاء مشروع جديد:
- File → New → Project
- اختر "Windows Forms App (.NET Framework)"
- أدخل اسم المشروع
- اضغط OK
أول برنامج VB.NET
برنامج Console بسيط:
Module Program
Sub Main()
Console.WriteLine("مرحباً بكم في VB.NET!")
Console.WriteLine("هذا أول برنامج لي")
Console.ReadKey()
End Sub
End Module
برنامج Windows Forms:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = "أول برنامج"
MessageBox.Show("مرحباً!")
End Sub
End Class
المتغيرات وأنواع البيانات
أنواع البيانات:
' أنواع البيانات الأساسية
Dim name As String = "أحمد"
Dim age As Integer = 25
Dim salary As Double = 5000.50
Dim isActive As Boolean = True
Dim grade As Char = "A"
' أنواع أخرى
Dim price As Decimal = 99.99D
Dim date1 As Date = #2024-01-15#
Dim number As Long = 1234567890L
تعريف المتغيرات:
' تعريف مباشر
Dim x As Integer = 10
' تعريف بدون قيمة
Dim y As Integer
y = 20
' تعريف متعدد
Dim a, b, c As Integer
a = 1
b = 2
c = 3
المعاملات والتعبيرات
المعاملات الحسابية:
Dim a As Integer = 10
Dim b As Integer = 3
Dim sum As Integer = a + b ' 13
Dim diff As Integer = a - b ' 7
Dim prod As Integer = a * b ' 30
Dim quot As Double = a / b ' 3.333...
Dim modu As Integer = a Mod b ' 1
Dim power As Double = a ^ 2 ' 100
المعاملات المنطقية:
Dim x As Boolean = True
Dim y As Boolean = False
Dim result1 As Boolean = x And y ' False
Dim result2 As Boolean = x Or y ' True
Dim result3 As Boolean = Not x ' False
عبارات الشرط If-Then
If-Then بسيط:
Dim age As Integer = 20
If age >= 18 Then
Console.WriteLine("يمكنك التصويت")
End If
If-Then-Else:
If age >= 18 Then
Console.WriteLine("يمكنك التصويت")
Else
Console.WriteLine("لا يمكنك التصويت")
End If
If-Then-ElseIf:
Dim score As Integer = 85
If score >= 90 Then
Console.WriteLine("ممتاز")
ElseIf score >= 80 Then
Console.WriteLine("جيد جداً")
ElseIf score >= 70 Then
Console.WriteLine("جيد")
Else
Console.WriteLine("يحتاج تحسين")
End If
Select Case
Select Case:
Dim day As Integer = 3
Select Case day
Case 1
Console.WriteLine("الاثنين")
Case 2
Console.WriteLine("الثلاثاء")
Case 3
Console.WriteLine("الأربعاء")
Case Else
Console.WriteLine("يوم آخر")
End Select
حلقة For
For Loop:
' حلقة For بسيطة
For i As Integer = 1 To 10
Console.WriteLine(i)
Next
' حلقة For مع Step
For i As Integer = 1 To 10 Step 2
Console.WriteLine(i)
Next
' حلقة For عكسية
For i As Integer = 10 To 1 Step -1
Console.WriteLine(i)
Next
حلقة While و Do Loop
While Loop:
Dim i As Integer = 1
While i <= 10
Console.WriteLine(i)
i += 1
End While
Do Loop:
' Do While
Dim i As Integer = 1
Do While i <= 10
Console.WriteLine(i)
i += 1
Loop
' Do Until
Dim j As Integer = 1
Do Until j > 10
Console.WriteLine(j)
j += 1
Loop
المصفوفات
مصفوفة بسيطة:
' تعريف مصفوفة
Dim numbers(4) As Integer
numbers(0) = 10
numbers(1) = 20
numbers(2) = 30
' تعريف مع القيم
Dim names() As String = {"أحمد", "محمد", "علي"}
' مصفوفة متعددة الأبعاد
Dim matrix(2, 2) As Integer
matrix(0, 0) = 1
matrix(0, 1) = 2
الدوال (Sub و Function)
Sub Procedure:
Sub Greet(name As String)
Console.WriteLine("مرحباً " & name)
End Sub
' استدعاء
Greet("أحمد")
Function:
Function Add(a As Integer, b As Integer) As Integer
Return a + b
End Function
' استدعاء
Dim result As Integer = Add(5, 3)
النماذج (Forms)
إنشاء Form:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = "نموذج جديد"
Me.Size = New Size(400, 300)
Me.StartPosition = FormStartPosition.CenterScreen
End Sub
End Class
عناصر التحكم الأساسية
Button و Label و TextBox:
' Button
Button1.Text = "اضغط هنا"
Button1.Size = New Size(100, 30)
' Label
Label1.Text = "النص هنا"
Label1.ForeColor = Color.Blue
' TextBox
TextBox1.Text = "أدخل النص"
TextBox1.Multiline = True
الأحداث (Events)
معالجة الأحداث:
Private Sub Button1_Click(sender As Object, e As EventArgs) _
Handles Button1.Click
Label1.Text = "تم الضغط!"
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) _
Handles TextBox1.TextChanged
Label1.Text = TextBox1.Text
End Sub
MessageBox و InputBox
MessageBox:
' MessageBox بسيط
MessageBox.Show("مرحباً!")
' MessageBox مع عنوان
MessageBox.Show("هل تريد المتابعة؟", "تأكيد", MessageBoxButtons.YesNo)
' MessageBox مع أيقونة
MessageBox.Show("خطأ!", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
InputBox:
Dim name As String = InputBox("أدخل اسمك:", "إدخال")
If name <> "" Then
Label1.Text = "مرحباً " & name
End If
البرمجة الكائنية - المقدمة
مفاهيم OOP:
- Class: قالب لإنشاء الكائنات
- Object: مثال من الكلاس
- Encapsulation: إخفاء البيانات
- Inheritance: الوراثة
- Polymorphism: تعدد الأشكال
Classes و Objects
تعريف Class:
Public Class Person
Public Property Name As String
Public Property Age As Integer
Public Sub Display()
Console.WriteLine(Name & " - " & Age)
End Sub
End Class
' استخدام
Dim person As New Person()
person.Name = "أحمد"
person.Age = 25
person.Display()
Constructors
Constructor:
Public Class Person
Public Property Name As String
Public Property Age As Integer
Public Sub New(name As String, age As Integer)
Me.Name = name
Me.Age = age
End Sub
End Class
' استخدام
Dim person As New Person("أحمد", 25)
Properties
Properties:
Public Class Person
Private _name As String
Public Property Name As String
Get
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
End Class
Inheritance
الوراثة:
Public Class Animal
Public Sub Eat()
Console.WriteLine("الحيوان يأكل")
End Sub
End Class
Public Class Dog
Inherits Animal
Public Sub Bark()
Console.WriteLine("الكلب ينبح")
End Sub
End Class
' استخدام
Dim dog As New Dog()
dog.Eat() ' من Animal
dog.Bark() ' من Dog
Polymorphism
تعدد الأشكال:
Public Class Shape
Public Overridable Sub Draw()
Console.WriteLine("رسم شكل")
End Sub
End Class
Public Class Circle
Inherits Shape
Public Overrides Sub Draw()
Console.WriteLine("رسم دائرة")
End Sub
End Class
التعامل مع الملفات
قراءة وكتابة الملفات:
Imports System.IO
' الكتابة
Using writer As New StreamWriter("data.txt")
writer.WriteLine("مرحباً بالعالم")
End Using
' القراءة
Using reader As New StreamReader("data.txt")
Dim line As String = reader.ReadLine()
Console.WriteLine(line)
End Using
Exception Handling
Try-Catch:
Try
Dim result As Integer = 10 / 0
Catch ex As DivideByZeroException
MessageBox.Show("خطأ: القسمة على صفر!")
Catch ex As Exception
MessageBox.Show("خطأ: " & ex.Message)
Finally
Console.WriteLine("تم التنفيذ")
End Try
قواعد البيانات - ADO.NET
الاتصال بقاعدة البيانات:
Imports System.Data.SqlClient
Dim connectionString As String = "Server=localhost;Database=mydb;Integrated Security=True"
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand("SELECT * FROM Users", connection)
Dim reader As SqlDataReader = command.ExecuteReader()
While reader.Read()
Console.WriteLine(reader("Name"))
End While
End Using
DataGridView
عرض البيانات:
Dim adapter As New SqlDataAdapter("SELECT * FROM Users", connection)
Dim table As New DataTable()
adapter.Fill(table)
DataGridView1.DataSource = table
LINQ
LINQ to Objects:
Dim numbers() As Integer = {1, 2, 3, 4, 5}
Dim evenNumbers = From n In numbers
Where n Mod 2 = 0
Select n
For Each num In evenNumbers
Console.WriteLine(num)
Next
مشروع متوسط
نظام إدارة طلاب:
Public Class Student
Public Property Name As String
Public Property Age As Integer
Public Property Grade As Double
End Class
Public Class StudentManager
Private students As New List(Of Student)
Public Sub AddStudent(name As String, age As Integer, grade As Double)
Dim student As New Student()
student.Name = name
student.Age = age
student.Grade = grade
students.Add(student)
End Sub
Public Function GetStudents() As List(Of Student)
Return students
End Function
End Class
Best Practices
أفضل الممارسات:
- استخدم Option Explicit On
- استخدم أسماء متغيرات واضحة
- استخدم Try-Catch للتعامل مع الأخطاء
- استخدم Using للتعامل مع الموارد
- نظم الكود في Classes
- استخدم Comments للتوضيح
نشر التطبيقات
نشر التطبيق:
- Build → Publish
- اختر موقع النشر
- اختر طريقة النشر
- اضغط Publish
مشروع تطبيقي كامل
نظام إدارة مكتبة:
' Form مع DataGridView و Buttons
Public Class LibraryForm
Private Sub LoadBooks()
' كود تحميل الكتب من قاعدة البيانات
End Sub
Private Sub AddBook()
' كود إضافة كتاب جديد
End Sub
Private Sub DeleteBook()
' كود حذف كتاب
End Sub
End Class