PDA

View Full Version : سوال: دسترسي به فيلدهاي فرم زيرين؟



sajadjamalian
شنبه 23 مرداد 1389, 12:54 عصر
سلام دوستان:
من توي برنامه دو تا فرم دارم كه فرم دوم رو روي فرم اول showdialog ميكنم، حالا ميخواستم ببينم چطوري ميتونم از توي فرم دوم به فيلدهاي فرم زيرين دسترسي داشته باشم، مثلا از توي فرم دوم مقدار يه textbox رو توي فرم اول تغيير بدم؟؟

C Sharp
شنبه 23 مرداد 1389, 13:47 عصر
تو فرم دوم این کد رو بنویسید :



private Form1 _form1;

public DialogResult ShowDialog(Form1 form1)
{
_form1 = form1;
return this.ShowDialog();
}


و تو فرم اول این کد :




public string TextBox1Text
{
set { textBox1.Text = value; }
}



البته روش اصولی تر استفاده از اینترفیس هست ، ولی فعلا همین کارتون رو راه میندازه

sajadjamalian
شنبه 23 مرداد 1389, 16:34 عصر
سلام:
مشکل من حل نشد، کسی میتونه بیشتر توضیح بده؟
کارم خیلی گیره این قضیه هست!!!!

vandermond
شنبه 23 مرداد 1389, 17:28 عصر
دوست عزيز. قبلا بحث شده. جستجو جستجو
بايد يك خاصيت public درست كني تو فرم زيرين و مقدار تكست باكس رو بتوني از اون بخوني. حالا از فرم دوم ميتوني به اون خاصيت دسترسي داشته باشي.
اگه مشكلي بود بگو. (البته لطف كن جستجو كن. هست)

Mani_rf
شنبه 23 مرداد 1389, 17:43 عصر
متاسفانه این یکی از نقاط ضعف C#‎‎ که فرمی که قراره باز بسه حتما باید به متغیر نسبت داده بشه. تو VB.Net انجام این کار به همین راحتی انجام میشه :


'From 1
'----------------
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


Form2.Show()


EndSub


'Form 2
'-----------------
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



خواندن متن نوشته شده تکس باکس'

MessageBox.Show(Form1.TextBox1)

تغییر متن نوشته شده درون تکس باکس'

Form1.TextBox1.Text = "Updated"



EndSub

vandermond
شنبه 23 مرداد 1389, 17:49 عصر
ما با VB كار نداريم فعلا:لبخند:
يه راه ديگه هم اينه كه توي متد سازنده فرم دوم يك string بگيري و وقتي فرم 2 رو نمونه سازي ميكني اون تكست رو هم بفرستي بهش. (اگه ميخاستي برعكس كار كني روش قبلي رو بايد ميرفتي ولي اينجا اين هم ميشه)

C Sharp
دوشنبه 25 مرداد 1389, 08:50 صبح
میشه مشکلت رو بیشتر توضیح بدی ؟ و اینکه چرا کدی که گذاشتم مشکلت رو حل نکرد ؟



متاسفانه این یکی از نقاط ضعف C#‎‎‎ که فرمی که قراره باز بسه حتما باید به متغیر نسبت داده بشه.

اتفاقا به نظر من یکی از نقاط قوت سی شارپ نسبت به VB همینه!

Mani_rf
دوشنبه 25 مرداد 1389, 11:07 صبح
میشه مشکلت رو بیشتر توضیح بدی ؟ و اینکه چرا کدی که گذاشتم مشکلت رو حل نکرد ؟




اتفاقا به نظر من یکی از نقاط قوت سی شارپ نسبت به VB همینه!

چه ویژگی منحصری داره این؟
و اینکه این چه نقطه قوتیه، تو VB هم که میشه از این روش استفاده کرد!!؟؟!!


Dim NFrom as New Form2

NForm.Show()

:متفکر:

مهدی فرزاد
دوشنبه 25 مرداد 1389, 11:48 صبح
سلام تا حالا چند بار اين بحث مطرح شده من يك راه پيشنهاد كردم در پست زير و درانتهاي پست هم يك مثال گذاشتم
اينن مشكلت رو حل ميكنه
http://www.barnamenevis.org/forum/showthread.php?t=239955&page=2