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

نسخة كاملة : عاجل - تمرير متغير لفورم
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
كيف اممر متغير لفورم بحيث يكون المتغير عام على الفورم استطيع ان اغير قيمته
سؤال غريب !!

لماذا اصلا تريد تمرير متغير للفورم

انت عندك موديول ضع فيه كل متغيراتك وقم باستدعائها من اي فورم
استخدم public property
جزاك الله خير اخى سعود وجزاك الله خير اخى الشاكى لله
عملت فركتك اخى الشاكى لله عملت موديول عام وخليت كل المشاريع فى السيليوشن تتعرف عليه
جزاكم الله خير
السلام عليكم ورحمة الله وبركاته


بعد إذن أخواني....

أنا شخصياً أستخدمها عند الحاجة، فمثلا نافذة بيانات موظف، أقوم بتمرير رقم id الخاص بالموظف في أمر استدعاء الفورم.

هذا طريقة الكود للفورم Form2 المخصص لبيانات الموظف وهو ثلاثة في واحد (تحديث و عرض و إضافة)
كود :
Public Class Form2

    Dim _id As Integer
    Dim _update As Boolean

    ' من أجل يكون الفورم صالح للتحديث والعرض فقط وإضافة بيانات جديد Optional جعلت المعاملات هنا اختياري
    Public Sub New(Optional ByVal id As Integer = 0, Optional ByVal update As Boolean = False)
        ' This call is required by the Windows Form Designer.
        InitializeComponent() ' لا تحذف هذا السطر ولا تضع شيئأ قبله
        ' Add any initialization after the InitializeComponent() call.

        _id = id
        _update = update

    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If _id <> 0 Then
            ' عندما يوجد رقم أقوم بعرض بيانات الموظف
            ViewEmployeeProfile()

            If _update Then

                ' عندما المراد تحديث أغرض النص للأزارير لتتلائم مع المراد
                Me.Button1.Text = "تحديث"

            Else
                ' عندما المراد عرض البيانات فقط أقوم بتعطيل تحرير مربعات النص مثلا
                Me.Button1.Text = "إغلاق"

            End If

        Else

            ' وإذا كان صفراً أترك النموذج فارغا لتسجيل بيانات موظف جديد
            Me.Button1.Text = "إضافة"

        End If

    End Sub

    ' عرض البيانات البيانات
    Private Sub ViewEmployeeProfile()
        Dim sql As String = " SELECT * FROM[table1] WHERE [id] = " & _id
        '
        '
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If _id <> 0 Then
            If _update Then
                If UpdateEmployeeProfile() Then
                    Me.DialogResult = Windows.Forms.DialogResult.Yes
                End If
            Else
                If AddEmployeeProfile() Then
                    Me.DialogResult = Windows.Forms.DialogResult.Yes
                End If
            End If
        Else
            Me.DialogResult = Windows.Forms.DialogResult.OK
        End If
    End Sub

    ' تحديث البيانات
    Private Function UpdateEmployeeProfile() As Boolean
        Try
            Dim sql As String = " UPDATE [table1] SET [cname]=@cname, [bdate]=@bdate,.... WHERE [id] = " & _id
            '
            ''
            Return True

        Catch ex As Exception
            Return False
        End Try
    End Function

    ' إضافة البيانات البيانات
    Private Function AddEmployeeProfile() As Boolean
        Try
            Dim sql As String = " INSERT INTO [table1] ( [cname], [bdate],....) VALUES ( @cname, @bdate,....)  "
            '
            ''
            Return True

        Catch ex As Exception
            Return False
        End Try
    End Function

End Class

وهذه طريقة استدعائه من الـ Form1 بتمرير المعامل
كود :
Public Class Form1


    ' إضافة بيانات موظف جديد
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' لا بد من سطر التعريف أولا وهنا لم نسند معاملاً لأن الهدف إضافة جديد
        Dim frm As New Form2()
        If frm.ShowDialog(Me) = Windows.Forms.DialogResult.Yes Then
            ' ListView قم بتحديث
        End If

    End Sub

    ' عرض بيانات موظف فقط
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        ' نمرر رقم تعريف الموظف ListView مثلا لو كان لدينا

        ' لا بد من سطر التعريف أولا لإسناد رقم تعريف الموظف
        ' مع تجاهل المعامل الثاني لأن الافتراضي له هي عرض البيانات فقط
        Dim frm As New Form2(Val(Me.ListView1.SelectedItems(0).Text))
        frm.ShowDialog(Me)

    End Sub

    ' تحديث بيانات موظف موجود
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        ' وخترنا تحديث بيانات الموظف المحدد فيها ListView مثلا لو كان لدينا

        ' لا بد من سطر التعريف أولا لإسناد رقم تعريف الموظف
        ' مع تحديد المعامل الثاني وهي لتحديث بيانات وليس عرض البيانات فقط
        Dim frm As New Form2(Val(Me.ListView1.SelectedItems(0).Text), True)
        If frm.ShowDialog(Me) = Windows.Forms.DialogResult.Yes Then
            ' ListView قم بتحديث
        End If

    End Sub

End Class


السلام عليكم ورحمة الله وبركاته
جزاك الله خيرا اخى ابو رائد
حدرتك وضحت لى هذه الطريقة من قبل
وهى بالفعل ما كنت اعمل به
لاكن انا اريد تغير اصل المتغير
وفكرة اخى الشاكر لله كويسة
بحيث انى عامل فى السيليوشن 6 مشاريع
مش معقول كل شوية امرر المتغير ( هيزهق منى ) ههه
عملت مشروع جديد مكتبات كلاسات وعملت موديول عام وعملت المتغير فيه عام ايضا
كده كل المشاريع فى نفس السيليوشن تقدر تصل اليه وتغير قيمته
انتا عارف ايه هو المتغير ده اهم متغير فى حياتى
هو متغير يحمل بينات المستخدم مشفرة
ههه ربنا يبعد عننا الهكر ويجعل كلامنا خفيف عليهم