كود :
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
أضف السطر هذا كأخر سطر في الحدث Load
اضافته ولكن مفيش لسه المشكله موجوده
حاول توضح الهدف من الكود الخاص بك
أحيانا Performlayout قد تحل المشكلة
الكود كله شغال عدا ان التيسكت دى TXTGNAME.Text
= fullname وده متغير على موديول على مستوى المشروع
والفورم ده بيفتح اول ما المشروع بيفتح بس التيكست ده بيكون فاضى
لو ضغطت على زار فتح الفورم بياخد قيمته الى هى الFULLNAME
مقدر مجهود حضرتك معايا بجد وشاكر جداا لحضرتك
فهمت المشكلة تقريبا أنت تقوم بتخصيص متغير باستخدام Ref
وعملية تخصيص القيمة لا يتم تمريرها الي property مثلا أو الي دالة معينة في موديول بالشكل المناسب و تخصل غالبا علي Nothing
اكتب الدالة الموجودة في الموديول
وان كنت لا تريد كتابتها هنا ارسلها لي علي الخاص
هو انا بجد مش فاهم تقصد ايه علشان مبتدئ
بس انا عامل متغير على الموديول عادى
Public fullname As String
وقيمته بياخدها من فورم تسجيل الدخول وبيشتغل عادى على الفورم ده وغيره اول ما بضغط على زرار الفروم بس الفورم ده بيفتح اول ما البرنامج بيفتح بس قيمته بتكون فاشيه وهى دى المشكله
اكتب الكود التالي في الموديول
PHP كود :
Public Sub GetString(s As String, ByRef result As String)
If Not String.IsNullOrEmpty(s) Then
result = s
End If
End Sub
و عليك فقط بتمرير القيم لها كالتالي
PHP كود :
Dim fullNameresult As String = Nothing
PHP كود :
GetString(fullname, fullNameresult)
القيمة fullNameresult ستاخذ القيمة الأصلية التي تريدها
في المرفقات ستجد مثالا مختلف قليلا عن الكود أعلاه
سيوضح لك كيف تمرر البيانات الي الموديول