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

نسخة كاملة : مشكله فى الكود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كود :
Private Sub folderadd_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       


       'Dim q As Integer
       'For q = 0 To dgvprodac.Rows.Count - 1
       '    If Convert.ToInt32(dgvprodac.Rows(q).Cells("qty").Value < dgvprodac.Rows(q).Cells("talab").Value) Then
       '        dgvprodac.Rows(q).Cells("qty").Style.BackColor = Color.Red
       '    End If
       'Next


       For i = 0 To dgvprodac.Columns.Count - 1
           dgvprodac.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable

       Next


       Dim da As New OleDb.OleDbDataAdapter("select label from tab_pro", con)
       Dim dt As New DataTable
       pd = Me.BindingContext(dt)
       da.Fill(dt)
       Dim itms = dt.Rows.Cast(Of DataRow).Select(Function(x) x("label").ToString).ToArray
       Dim gh As New AutoCompleteStringCollection()
       gh.AddRange(itms)
       txtlabel.AutoCompleteCustomSource = gh
       txtlabel.AutoCompleteMode = AutoCompleteMode.SuggestAppend
       txtlabel.AutoCompleteSource = AutoCompleteSource.CustomSource


   

       Try
           con.Open()
           sqlstr = "Select IIF(MAX(Id) IS NULL,0,MAX(Id)) + 1 AS maxId from TAB_OLDER"
           cmd = New OleDbCommand(sqlstr, con)
           txtnamper.Text = cmd.ExecuteScalar()
           ' الكود ده مش بيتفعل غير لما اضغط على زر الفورم والفورم بيفتح اصلا اول مفتح البرنامج
           TXTGNAME.Text = fullname
           con.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try


   End Sub
الفورم بيفتح اول ما البرنامج بيفتح اصلا والكود ما بيتفعلش غير لما اضغط على زر الفورم
TXTGNAME.Text = fullname
أن الحقيقة مش فاهم الكود الخاص بك

لكن هل تقصد أن الكود لا يتم تنفيذه الا عند الضغط بالماوس علي الفورم
بالظبط
هو اصلا بيفتح مع تشغيل البرنامج بس الكود ده TXTGNAME.Text = fullname
مبيشتغلش غير لما اضغط على الزار الخاص بالفورم
واضح انك تقوم بتغيير شئ في الوان او تكست بأسلوب ما

الفورم بيرسم نفسه أول ما بيفتح بناء علي بيانات مبدئية يقرأها من Properties الخاصة به
وغالبا الفورم بينفذ الأوامر الموجودة في الحدث Load قبل ما يرسم نفسه

وبالتالي لن يقوم بتنفيذ تغيرات لها علاقة بعملية الرسم إالا إن تم التعامل مع الفورم بواسطة الماوس
وهناك حالات اخري قد يقوم الفورم فيها برسم نفسه مثل عندما يتعارض مع نافذة اخري مفتوحة
وبالتالي عندما تقوم بعمل Activate للفورم سوف تحصل التغييرات التي تريدها

ان كان هذا ما يحدث معك عليك أن تجبر الفورم لي رسم نفسه باستخدام الأمر Refresh يحيث تكتبه بعد الانتهاء من تنفيذ الأوامر الموجودة في الحدث Load

PHP كود :
Me.Refresh 

أضف السطر هذا كأخر سطر في الحدث Load
اضافته ولكن مفيش لسه المشكله موجوده
حاول توضح الهدف من الكود الخاص بك
أحيانا Performlayout قد تحل المشكلة
الكود كله شغال عدا ان التيسكت دى TXTGNAME.Text
= fullname وده متغير على موديول على مستوى المشروع
والفورم ده بيفتح اول ما المشروع بيفتح بس التيكست ده بيكون فاضى
لو ضغطت على زار فتح الفورم بياخد قيمته الى هى الFULLNAME

مقدر مجهود حضرتك معايا بجد وشاكر جداا لحضرتك
فهمت المشكلة تقريبا أنت تقوم بتخصيص متغير باستخدام Ref
وعملية تخصيص القيمة لا يتم تمريرها الي property مثلا أو الي دالة معينة في موديول بالشكل المناسب و تخصل غالبا علي Nothing

اكتب الدالة الموجودة في الموديول
وان كنت لا تريد كتابتها هنا ارسلها لي علي الخاص
هو انا بجد مش فاهم تقصد ايه علشان مبتدئ
بس انا عامل متغير على الموديول عادى
Public fullname As String
وقيمته بياخدها من فورم تسجيل الدخول وبيشتغل عادى على الفورم ده وغيره اول ما بضغط على زرار الفروم بس الفورم ده بيفتح اول ما البرنامج بيفتح بس قيمته بتكون فاشيه وهى دى المشكله
اكتب الكود التالي في الموديول

PHP كود :
   Public Sub GetString(As StringByRef result As String)
 
       If Not String.IsNullOrEmpty(sThen
            result 
s
        End 
If

 
   End Sub 

و عليك فقط بتمرير القيم لها كالتالي

PHP كود :
Dim fullNameresult As String Nothing 

PHP كود :
       GetString(fullnamefullNameresult

القيمة fullNameresult ستاخذ القيمة الأصلية التي تريدها

في المرفقات ستجد مثالا مختلف قليلا عن الكود أعلاه
سيوضح لك كيف تمرر البيانات الي الموديول
الصفحات : 1 2