منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيفية سحب قيمة متغير ادخل Public
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم شباب عندى سؤال و هو عندى اكتر من 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 اخرى كيفة يتم ذلك Huh
حتى ياتي احد يكون فهم المطلوب هل ممكن توضح ولو بفكرة عشان يكون اوضحSmile
الان قومت بعمل هذا الكود فى الكلاس الخاص بى 
كود :
 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
علشان اقدر اتعامل مع قاعدة البيانات بدون ما اكتب بيانات تانية فى الفروم علشان اسحب نفس البيانات مره تانية Huh
السلام عليكم
على حسب فهمي لطلبك ممكن تستخدم 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"