الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية نقل نص من فورم الى فورم آخر بدون عمل Refresh للفورم الآخر

مغلق
بدأه sso_neT في 21 أكتوبر 2006 · 5 رد · 907 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم ...

عندي سؤال محيرني من زمان ,, أصيغه لكم بالمثال التالي ::

عندي فورمين ( نموذجين ) الفورم الاول يوجد به حقل الاسم ( مربع نصي ) والفورم الثاني فيه لستة اسماء على شكل داتا قريد

المطلوب هو اختيار اسم من الداتا جريد واغلاق فورم الدتا جريد ونقل الاسم مباشرة في حقل الاسم في الفورم الاول بدون عمل اخفاء واظهار للفورم الاول

حيث انني لمن اعمل hide ثم show للفورم الاول ,, تضبط الطريقه ميه بالميه

بس مااابغي اعمل hide للفورم الاول

ارجو ان يكون السؤال واضح

والسلام

063bx.gif
#2

وعليكم السلام ورحمه الله وبركاته

:rolleyes:

اخوي ما ادري اذا فهمت عليك بس على العموم ممكن استخدام داله Focus() في البدايه فهي تقوم بالتركيز على الفورم

مثال : -

لو افترضنا انو Button1 هو المدخل للفورم الثاني وراح يحوي قيمه الداتا جرد الي افترضانا انها ListBox1

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim o As New Form2(Me)

o.Show()

End Sub

End Class

Public Class Form2

Dim MainForm As Form

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

For i As Integer = 0 To 10

ListBox1.Items.Add("Number" & i)

Next

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ListBox1.SelectedIndexChanged

' استدعاء الفورم الاساسي والتركيز له

MainForm.Focus()

' اعطاء القيمه للمتغير

MainForm.Controls("Button1").Text = ListBox1.SelectedItem.ToString

' اغلاق الفورم

Me.Close()

End Su

End Sub

End Class[/

ونقطة انها تضبط مع Hide() بعدين Show()

Show() ---- > تقوم باستدعاء Focus()

يجب استدعاء Focus() لادخال قيمه للفورم او لاي متغير اخر

Use the Focus method to set the initial focus of the control

وشكرا :D

#3

أخوي شكرا لك على التعقيب

حاولت ابسط الموضوع واطبق نفس شرحك بس تطلع لي رسالة وهي :

Object reference not set to instance of an object

وياليت توضح اكثر ,, ويعطيك العافيه

والمثال اللي انا جربته هو كتابة الكود التالي :

الكود هذا في الفورم الاول Form1

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Dim s As New Form2
		s.Show()
	End Sub

والكود التالي في الفورم الثاني :

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Try
			Dim MainForm As Form
			MainForm.Focus()
			MainForm.Controls("Textbox1").Text = "22222".ToString
		Catch exx As Exception
			MsgBox(exx.Message)
		End Try
	End Sub

تم تعديل هذه المشاركة بواسطة sso_neT في 22 أكتوبر 2006 في 03:31

063bx.gif
#4

اسف على التأخير اخوي

*-)

ضع هذا الكود مكان ال Constrouctor في Form1

Public Sub New(ByRef MainForm As Form)

Me.MainForm = MainForm

' This call is required by the Windows Form Designer.

InitializeComponent()

' Add any initialization after the InitializeComponent() call.

End Sub

* عند عمليه ادخال قيمه لاي متغير او Component داخل ال Form

تحتاج الى استعداء الفورم في البدايه وعند عمليه الاستدعاء Focus انت تقوم بالسماح بادخال Input للفورم او اي Component داخله

في بعض الاحيان تتطلب Foucus لل Component لاحظ انو اي Component داحله داله من نوع Focus تقدر تراجع Documentaion وبتحصل الي يفيدك

وشكرا

#5

السلام عليكم

إذا كنت تعمل على Visual Basic.NET 2005 فالكود لا يتعدى السطرين إليك ذلك.

My.Forms.Form1.Show()
My.Forms.Form1.txtBox1.Text = "22222"

إما في 2003 فإستخدم الحدث Application.DoEvent بدل عملية الانعاش Refresh

والله اعلم.

في المثال يتضح المقال

#6

سلام عليكم ...

شكرا لكم أخواني _Developer_ , الغملاسي

ولكن يبدو ان الفكرة ماوصلت للآن ...

على العموم يعطيكم العافية

063bx.gif

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…