vb.net: ما هي أفضل طريقة لاسترداد قيمة من النموذج الثاني؟
-
09-09-2019 - |
سؤال
أنا أعلم نفسي vb.net.
فيما يلي مشكلة صادبت مؤخرا. قل لدي نموذج رئيسي في طلبي. يستدعي Form1 تسجيل الدخول الثاني (مثل الاسم الذي يوحي) هو إطار تسجيل الدخول باستخدام حقول نوع اسم المستخدم / كلمة المرور. السلوك المتوقع هو أن LoginForm سيحقق تفاصيل تسجيل الدخول وتمريرها إلى Form1.
ما هي أفضل طريقة للقيام بذلك؟
في ذهني، كنت أفكر على خطوط الدالة الدالة مثل "dolologin" من شأنها أن تظهر "تسجيل الدخول"، والتقاط البيانات المدخلة، والتخلص من النموذج وإرجاع تفاصيل تسجيل الدخول (ربما في نوع من الفول). بطريقة ما لا أرى هذا هو ممكن
ما لدي حاليا أقل أناقة. يتم عرض LoginForm بواسطة Form1 Standally (أي ShowDialog)؛ مرجع "لي" يتم تمرير إلى النافذة الثانية. بعد استلام إدخال المستخدم عند تسجيل الدخول، قمت بتعيين قيمة في Form1، ثم التخلص منها.
هل هذه هي الطريقة التي يفعلها الجميع؟
المحلول
لقد مرت دائما في مندوبا عن النموذج الثاني الذي يمكن استدعاؤه "بمرور" القيم من النموذج الثاني إلى الأول.
بهذه الطريقة التي تتجنبها أي اقتران ضيق.
نمط المراقب الكلاسيكي.
تطبيق مثال هو كما يلي:
أضف توقيع مفوض إلى Form1. في زر Form1 انقر فوق معالج الأحداث، إنشاء إنشاء فئة Form2 وتفويض Form1. تعيين وظيفة من Form2 للمندوب، واتصل بالمند:
'Form1.vb
Public Delegate Sub delPassData(ByVal text As TextBox)
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Dim frm As Form2 = New Form2
Dim del As delPassData = New delPassData(AddressOf frm.funData)
del(Me.textBox1)
frm.Show()
End Sub
في Form2، أضف وظيفة التي سيوجها المندوب. ستقوم هذه الوظيفة بتعيين نص TextBox1 إلى Label1.
'Form2.vb
Public Sub funData(ByVal text As TextBox)
label1.Text = text.Text
End Sub
لتمرير البيانات مرة أخرى إلى Form1، فقط funData
وظيفة ترجع القيم التي تريدها.
نصائح أخرى
على الرغم من أن هذا في C #، إلا أنه من السهل تحويله: C # مساعدة المبتدئين، كيف يمكنني اجتياز قيمة من طفل مرة أخرى إلى النموذج الأصل؟
يمكنك أيضا استرداد البيانات في vb.net باستخدام "My.forms"
يجب أن يأخذ أدناه النص من مربع نص في "تسجيل الدخول" ويضعه في مربع نص في النموذج الرئيسي.
Me.RetrievedDataTextBox.Text = My.Forms.LoginForm.Textbox1.Text