السلام عليكم شباب عندى سؤال و هو عندى اكتر من Public Sub و Private Sub
و دلا مثلا عنهم
كود :
Public Sub CheckUp(ByVal NameForm As System.Windows.Forms.Form)
Private Sub hclick(ByVal sender As Object, ByVal e As EventArgs)
دلوقتى لو عايز اخدى قيمة متغير
NameForm لى فى اول كود استخدمها فى ايه مكان اخر ازاى اقدر اخدها من
Public
يعنى مثلا هاخد NameForm و سوف يتم وضعها فى Public اخرى كيفة يتم ذلك
حتى ياتي احد يكون فهم المطلوب هل ممكن توضح ولو بفكرة عشان يكون اوضح

الان قومت بعمل هذا الكود فى الكلاس الخاص بى
كود :
Public Sub CheckUp(ByVal NameForm As System.Windows.Forms.Form)
End Sub
وجبت اسم الفروم عن طريق المتغير
NameForm تمام
طيب لو عملت Public تانية و عايز اجيب اسم الفروم من لى قبلها مثلا زاى كده
كود :
Public hello
dim s as string = nameform
End Sub
قصدى هنا ازاى اقدر اجيب قمية المتغير
NameForm من فوق Public Sub CheckUp من فى نفس الكلاس الى Public hello بنفس القيمة لى يحملها من قبل
هل جربت Function؟؟؟
كود :
Public Class Class1
Public Function fname(ByRef f As Form) As String
Return f.Name
End Function
Public Sub gname(ByRef f As Form)
MsgBox("hellow: " & fname(f))
End Sub
End Class
كود :
Dim c As New Class1
c.gname(Me)
لا ادري هل هذا ماتريده ام لا
اولا انت كاتب nameform والمفهوم عن name انه نصي String
فهذا يتناقض بالمفهوم مع اللي انت كاتبه NameForm As System.Windows.Forms.Form
اذا كان فعلا تقصد النوع System.Windows.Forms.Form
فحيكون مثلا TheForm As System.Windows.Forms.Form
هكذا
كود :
Class classname
Dim TheForm As System.Windows.Forms.Form
Sub New(ByVal myForm As System.Windows.Forms.Form)
Me.TheForm = myForm
End Sub
Public Sub CheckUp()
Dim s As String = TheForm.Name
End Sub
Private Sub hclick()
Dim s As String = TheForm.Name
MsgBox(s)
End Sub
End Class
الكلاس ما تشوف منه غير CheckUp لانها Public
الحين عندما تريد تنشئ متغير من الكلاس لازم ترسل له في نفس الوقت الفورم المستهدف مثل
كود :
Dim cls As New classname(Me) 'المقصود الفورم اللي تم فيه التعريف
لو انك وضعت كود الكلاس كامل او مشروعك كان ممكن افيدك اكثر بكثير
بمعنى اخر
عندى اتنين كلاس
الاول عبارة عن
كود :
Imports System.Windows.Forms
Public Class Alyspicy
Public Sub CheckUp(ByVal NameForm As System.Windows.Forms.Form, ByVal strcon As String, ByVal Table As String)
و التانى عبارة عن
كود :
Public Class AlySpicyAdd
Private Sub addtodata()
Dim con As New System.Data.OleDb.OleDbConnection(strcon)
If con.State = ConnectionState.Open Then con.Close()
Try
con.Open()
Dim da As New System.Data.OleDb.OleDbDataAdapter("select * from " + Table, con)
Dim ds As New DataSet
Dim cm As New System.Data.OleDb.OleDbCommandBuilder(da)
da.Fill(ds, Table).ToString()
Dim dr As DataRow = ds.Tables(Table).Rows(0)
For i As Integer = 0 To NameForm .Controls.Count - 1
طبعا المشكلة هنا هتكون فى الكلاس التانى فى المتغير
strcon و Table و NameForm
ازاى اقدر اسحب البيانات لى موجود فى الكلاس الاول من المتغيرات دى NameForm و strcon و Table
علشان اقدر اتعامل مع قاعدة البيانات بدون ما اكتب بيانات تانية فى الفروم علشان اسحب نفس البيانات مره تانية
السلام عليكم
على حسب فهمي لطلبك ممكن تستخدم Property
PHP كود :
Private _NameForm As Form
Public Property NameForm As Form
Get
Return _NameForm
End Get
Set(value As Form)
_NameForm = value
End Set
End Property
انا هذا الموضوع حاولت افهمه ولكن ما قدرت
برغم قلة خبرتي في الفيجوال بيسك ولكن اعتقد ان sub هي للتنفيذ بغض النظر عن كونها public او private يعني تقدر تستدعيها للتنفيذ بناء على طلبك واذا كانت تقبل متغيرات فالمطلوب منك هو ان تقدم هذه المتغيرات وليس ان تستعلم عنها
يعني كما void في سي شارب ينفذ ولا يرجع قيمة
فمثلا
public void doSomething(int param1, string param2)
{
// كود للتنفيذ
}
تستدعي بالشكل doSomething(3, "myText");
وعندها استدعائها نزودها بقيمة المتغيرات التي تريدها ولا يمكننا ان نستعلم على هذه المتغيرات لان افتراضيا لا قيمة لها ومنطقيا هذا غير مقبول
لا اعرف هل انا مخطئ في الفهم ام انك يا اخي لم توضح السؤال بشكل سليم
اثناء بحثي وجدت تعريف مهم اتمنى ان يفيدك
"Class is a Class, Sub and Function are methods, private is an access modifier"