سلام عليكم اخوتي في الله
اريد ان اتعلم كيفيفة ادخال مساج بوكس في مصفوفة erry
مثلا الكود التالي
إقتباس : If TxtStudentName.Text = "" Then
MsgBox(" يجب أدخال الاسم واللقب ")
TxtStudentName.Focus()
Return
End If
If TxtAddress.Text = "" Then
MsgBox(" يجب أدخال العنوان ")
TxtAddress.Focus()
Return
End If
If TxtN_Fone.Text = "" Then
MsgBox(" يجب أدخال رقم الهاتف")
TxtN_Fone.Focus()
Return
End If
If TxtJob.Text = "" Then
MsgBox("يجب أدخال الوظيفة")
TxtJob.Focus()
Return
End If
وانا عندي فورمات كثيرة فهذا فورم خاص بالطالب وفورم خاص بالاستاذ وفورم خاصة بالدروس ,,,, إلخ
اريد ان ادخلها في كلاس بحث اناديها من اي فورم اخرى
مثال عندي الكود التالي انا واضعو في كلاس واواريد ان اناديه من اي فورم اخرى وهذا الكود عبارة عن تحويل Tab إلى Enter يعني إذا ضغطت على Enter يعمل عمل Tab ويقفز من txtBx إلى TxtBx
أخرى
إقتباس :(Sub senderd (e As KeyEventArgs
If e.KeyCode = Keys.Enter Then
("{SendKeys.Send("{Tab
End If
End Sub
واريد ان اناديها من فورم الطلاب في الحدث keyup
اكتب الكود التالي
إقتباس : (MyConn.senderd(e
اريد نفس الطريقة بالنسبة msgbox التي اعرف عليها في classe وا ناديها في فورم الطلاب سامحيوني على الإطالة في الموضوع
أفيدوني أفادكم الله وشكرا
الطريقه عملت لها مثال بالمرفق ،/// طبعا غير اسماء الحقول من textbox1 , textbox2 الى الحقول الخاصه بك
[
attachment=9823]
اذا لم تفهم جزء ساشرحه لك ،، سأقوم بوضع الاكواد هنا لما اراد القراءة بدون تنزيل المرفق :
الكلاس العام :
كود :
Public Class MoveNextClass
Public Shared Sub checkText(ByVal TargetForm As Form)
For Each ctrl As Control In TargetForm.Controls
If TypeOf ctrl Is TextBox Then
If ctrl.Name = "TextBox1" And ctrl.Text = Nothing Then
MsgBox(" يجب أدخال الاسم واللقب ")
ctrl.Focus()
Exit Sub
End If
If ctrl.Name = "TextBox2" And ctrl.Text = Nothing Then
MsgBox("يجب أدخال العنوان")
ctrl.Focus()
Exit Sub
End If
If ctrl.Name = "TextBox3" And ctrl.Text = Nothing Then
MsgBox(" يجب أدخال رقم الهاتف")
ctrl.Focus()
Exit Sub
End If
If ctrl.Name = "TextBox4" And ctrl.Text = Nothing Then
MsgBox("يجب أدخال الوظيفة")
ctrl.Focus()
Exit Sub
End If
End If
Next
End Sub
''' <summary>
''' للانتقال الى الحقل التالي عند الضغط على انتر
''' </summary>
''' <param name="e"></param>
''' <remarks></remarks>
Public Shared Sub gotoNextControl(ByVal TargetForm As Form, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Char.IsControl(e.KeyChar) Then
If e.KeyChar.Equals(Chr(Keys.Return)) Then
TargetForm.SelectNextControl(TargetForm.ActiveControl, True, True, True, False)
e.Handled = True
End If
End If
End Sub
End Class
طريقة استخدام الكلاس :
كود :
Imports System.Security.Cryptography
Imports System.Text
Public Class Form1
Private Sub Fields_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress, TextBox5.KeyPress, TextBox4.KeyPress, TextBox3.KeyPress, TextBox2.KeyPress, TextBox1.KeyPress
Call MoveNextClass.gotoNextControl(Me, e)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MoveNextClass.checkText(Me)
End Sub
End Class
سؤالك لطيف جدا لكن من الواصح انك سألته بدون ما تدرك أبعاده جيدا
و لأن السؤال عجبني اسمحي لي أجاوبك بشكل مختلف قليلا
اولا MessageBox من الممكن اضافتها الي مصفوفة ولكن علي هيئة DialogResult
و الكود التالي يوضح ذلك و هو عبارة عن كلاس بسيط يمكن استدعاؤه من اي مكان في مشروعك بل ويمكن الاستغناء عن الكلاس ان احببت و تستخدم الدالة الموجودة به في اي كلاس اخر بحيث تستدعيها بنفس مكان وجودها
PHP كود :
Friend NotInheritable Class Messages
Public Shared Iterator Function GetMessages() As IEnumerable(Of Func(Of DialogResult))
Yield Function() MessageBox.Show("يجب أدخال الاسم واللقب", "Error")
Yield Function() MessageBox.Show("يجب أدخال العنوان", "Error")
Yield Function() MessageBox.Show("يجب أدخال رقم الهاتف", "Error")
Yield Function() MessageBox.Show("يجب أدخال الوظيفة", "Error")
' Add more messagees with the smae way
Return
End Function
End Class
الدالة الموجودة في الكلاس أعلاه توضح كيفية اضافة اي عدد من الرسائل انت تريده
و يتم استرجاع اي رسالة من المصفوفة عن طريق تمرير index الخاص بها فقط لا غير
و الكود التالي يوضح ذلك
PHP كود :
For i As Integer = 0 To Messages.GetMessages().Count - 1
Messages.GetMessages()(i)()
Next
الأن لنعود الي الكود الخاص بك و كيف نستخدم نفس الأسلوب لاستعادة رسالة ما
انا طبعا لم أعدل في الكود الخاص بك و لا اعلم هل به أخطاء ام لا و لكني استخدمته كما هو لتوضيح كيفية اظهار الرسالة المطلوبة مع كل تكست بوكس
PHP كود :
If TxtStudentName.Text = "" Then
Messages.GetMessages()(0)()
TxtStudentName.Focus()
Return
End If
If TxtAddress.Text = "" Then
Messages.GetMessages()(1)()
TxtAddress.Focus()
Return
End If
If TxtN_Fone.Text = "" Then
Messages.GetMessages()(2)()
TxtN_Fone.Focus()
Return
End If
If TxtJob.Text = "" Then
Messages.GetMessages()(3)()
TxtJob.Focus()
Return
End If
شكرا أخي الكريم جزاك الله عنكا كل خير
اخي والله فرحت لأنك فهمت قصدي انا رأيت كورس للأستاذ أحمد نجار ربط فيه SQL مع VB.NET فدرتسه وفهمت اعجبني اللوب تعلن عن متغير في كلاس وتناديه في اي مكان آخر
شكرا لك اخي لكن لم فاهم ممكن تشرحلي الكود
هذا حل أسهل لك قليلا حتي لا تدخل في متاهة مع Index
وهذا اصبح أسهل لأنك هنا تتعامل مع Enum باسماء الرسائل
اضف الكلاسات التالية الي مشروعك
PHP كود :
Friend NotInheritable Class Messages
Public Shared Function GetMessage(kind As MessagesKind) As DialogResult
Select Case kind
Case MessagesKind.Name
Return GetMessages()(CInt(MessagesKind.Name))()
Case MessagesKind.Address
Return GetMessages()(CInt(MessagesKind.Address))()
Case MessagesKind.Phone
Return GetMessages()(CInt(MessagesKind.Phone))()
Case MessagesKind.Occupation
Return GetMessages()(CInt(MessagesKind.Occupation))()
End Select
Return Nothing
End Function
Private Shared Iterator Function GetMessages() As IEnumerable(Of Func(Of DialogResult))
Yield Function() MessageBox.Show("يجب أدخال الاسم واللقب", "Error")
Yield Function() MessageBox.Show("يجب أدخال العنوان", "Error")
Yield Function() MessageBox.Show("يجب أدخال رقم الهاتف", "Error")
Yield Function() MessageBox.Show("يجب أدخال الوظيفة", "Error")
' Add more messagees with the smae way
Return
End Function
End Class
Public Enum MessagesKind
Name = 0
Address = 1
Phone = 2
Occupation = 3
End Enum
و الكود التالي يوضح التعديل و طريقة الاستخدام مع الكود الخاص بك
PHP كود :
If TxtStudentName.Text = "" Then
Messages.GetMessage(MessagesKind.Name)
TxtStudentName.Focus()
Return
End If
If TxtAddress.Text = "" Then
Messages.GetMessage(MessagesKind.Address)
TxtAddress.Focus()
Return
End If
If TxtN_Fone.Text = "" Then
Messages.GetMessage(MessagesKind.Phone)
TxtN_Fone.Focus()
Return
End If
If TxtJob.Text = "" Then
Messages.GetMessage(MessagesKind.Occupation)
TxtJob.Focus()
Return
End If
أنت فقط و بشكل مبدئي يجب أن تتعلم المصفوفات و كيفية بناء مصفوفة فهذا الأمر هام جدا و أساسي لأي مبرمج
ادرس المصفوفات و بعدين نتناقش و ثق تماما انك لو فهمت المصفوفات فلن تحتاج لأي نقاش
حسننا سأدرس المصفوفات شكرا لك أستاذنا جزاك الله كل خير تقبل الله حسن عملك وزادك الله حرصا للخير
شكرا لك
تفضل اخي زيادة على الي وضعوة الاخوة مشكورين يعني زياده الخير خيرين
ضع هذا بالكلاس
Public Sub msg_err()
MsgBox("الإدخــــــــال إجــــــــباري", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRight, "خطـأ")
End Sub
وهذا في الاستدعاء داخل البتون
If TxtStudentName.Text = "" Then
MyConn.msg_err()
TxtStudentName.Focus()
Exit Sub
End If