vb.net: ما هي أفضل طريقة لاسترداد قيمة من النموذج الثاني؟

StackOverflow https://stackoverflow.com/questions/741663

  •  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 وظيفة ترجع القيم التي تريدها.

نصائح أخرى

يمكنك أيضا استرداد البيانات في vb.net باستخدام "My.forms"

يجب أن يأخذ أدناه النص من مربع نص في "تسجيل الدخول" ويضعه في مربع نص في النموذج الرئيسي.

Me.RetrievedDataTextBox.Text = My.Forms.LoginForm.Textbox1.Text
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top