PDA

View Full Version : سوال: انتقال مقادیر بین دو فرم



امینه قاضی زاده
جمعه 02 مهر 1389, 15:14 عصر
سلام دوستان
من می خوام یک مقدار حالا از هر نوعی رو از یک فرم به یه فرم دیگه منتقل کنم به عنوان مثال فرم اول بزه و با کلیک روی یه دکمه فرم بعدی باز میشه و ما یه مقداری رو توی یه تکست باکس می ریزیم و مخوایم با کلیک روی یه دکمه در همون فرم دوم مقدار تکست باکس به فرم اول منتقل بشه مثلا به یه کنترل تکست باکس به فرم اول ؟
ببینید من کنترل تکست باکس از فرم اول رو public ردم از فرم دوم هم بهش دسترسی دارم مقدار هم بهش می دم اما بعد از بسته شدن فرم دوم مقدار به تکست باکس اول منتقل نمشه؟؟؟ کمک:عصبانی++:

mmd2009
جمعه 02 مهر 1389, 15:28 عصر
با سلام

http://www.barnamenevis.org/forum/showthread.php?t=247839

لینک بالا رو ببینید
موفق باشید

pedramfj
جمعه 02 مهر 1389, 15:31 عصر
سلام دوست عزیز ,من از کد زیر برای ارسال مقادیر بین فرم ها استفاده می کنم .
تا حالا هم که مشکلی نداشته.
این کد برای تعریف متغیر بصورت عمومی مینویسیم.

public static string name;
این کد هم برای مقدار دهی متغیر که قرار است به فرم دیگری ارسال شود.

name = text1.text;
از این به بعد هم وارد فرم مقصد میشم و از متغیر استفاده می کنم.
بدین شکل:

text2.text = Form1.name;
این کار چه فرم باز باشه چه بسته انجام می شه.

na3er-faraji
جمعه 02 مهر 1389, 16:04 عصر
سلام دوست عزیز ,من از کد زیر برای ارسال مقادیر بین فرم ها استفاده می کنم .
تا حالا هم که مشکلی نداشته.

به لینکی که دوستمون دادن برید اونجا کلی راجع به روش شما بحث شده.

mmd2009
جمعه 02 مهر 1389, 16:14 عصر
سلام دوست عزیز ,من از کد زیر برای ارسال مقادیر بین فرم ها استفاده می کنم .
تا حالا هم که مشکلی نداشته.
این کد برای تعریف متغیر بصورت عمومی مینویسیم.

public static string name;این کد هم برای مقدار دهی متغیر که قرار است به فرم دیگری ارسال شود.

name = text1.text;از این به بعد هم وارد فرم مقصد میشم و از متغیر استفاده می کنم.
بدین شکل:

text2.text = Form1.name;این کار چه فرم باز باشه چه بسته انجام می شه.

این روش اشتباه ترین روش ممکن می باشد.

میلاد قاضی پور
جمعه 02 مهر 1389, 17:41 عصر
دوست عزیز تو سایت دست کم 100 بار سوأل پرسیده شده و برنامه های مختلفی هم ارائه شده . اگر نیافتید بگید بفرستم براتون .


راستی آرژنگ کجاست ؟:لبخندساده:

امینه قاضی زاده
جمعه 02 مهر 1389, 19:54 عصر
ببینید دو حالت وجود داره حالت اول زمانیه که شما به یه متغیر public از یک فرم که هنوز باز نشده مقدار می دین و بعد اون رو باز می کنید:

puplic string st; مربوط به فرم دوم
فرض کنیم این کد رو توی یک باتن از فرم اول می نویسی:

Form2 frm = new Form2();

frm.st = textbox.text;

frm.show();
خوب من با این مشکلی ندارم اما اگه فرم دوم باز شد توجه که فرم اول هم بازه من می خوام حالا تو فرم 2 یه مقداری رو بگیرم با کلیک روی یه باتن فرم جاری یعنی دومی بسته بشه اولی بتونه مقدار دریافت شده از دومی رو روی یک کنترل مثل تکست باکس نمایش بده بدون اینکه فرم اول دوباره لود بشه من نمیدونم کد مربوطه رو کجا بنویسیم روش بالا برای این حالت جواب نمیده چون زمانی که فرم لود می شه یک شی جدید ساخته می شه و اگر هم خاصیتی براش تعریف کنم همه نال میشه لطفا راهنماییم کنی اگه بد نوشتم عذر می خوام

csharpprogramer88
جمعه 02 مهر 1389, 21:23 عصر
دوست عزيز كدي كه ميفرستم را تست كنيد و بگوييد منظور شما همينه يا نه . البته در مورد نحوه كد نويسي حتما راه هاي بهتري وجود داره

linux
جمعه 02 مهر 1389, 22:15 عصر
سلام دوستان
من می خوام یک مقدار حالا از هر نوعی رو از یک فرم به یه فرم دیگه منتقل کنم به عنوان مثال فرم اول بزه و با کلیک روی یه دکمه فرم بعدی باز میشه و ما یه مقداری رو توی یه تکست باکس می ریزیم و مخوایم با کلیک روی یه دکمه در همون فرم دوم مقدار تکست باکس به فرم اول منتقل بشه مثلا به یه کنترل تکست باکس به فرم اول ؟
ببینید من کنترل تکست باکس از فرم اول رو public ردم از فرم دوم هم بهش دسترسی دارم مقدار هم بهش می دم اما بعد از بسته شدن فرم دوم مقدار به تکست باکس اول منتقل نمشه؟؟؟ کمک:عصبانی++:
از روزی که انجمن بخش C# راه افتاد این سوال فکر کنم نفری یک بار پرسیده شده بگردید.خیلی تکراری هست این سوال

امینه قاضی زاده
جمعه 02 مهر 1389, 22:28 عصر
این کدی که شما دادید تقریبا مشکلم رو حل می کنه اما من نمی خوام با باز شدن فرم دوم فرم اولم هیدن بشه می خوام باز باشه ودیده بشه ببینی شما فرمتون رو یک بار hide کردین بعد هم از show استفاده کردید .
در این صورت من نمی دونم کدی رو که شما توی فرم لود فرم اول نوشتید کجا باید بنویسم.

na3er-faraji
جمعه 02 مهر 1389, 23:05 عصر
فرم1

public string a
{
get;
set;
}

private void button1_click()
{
form2 f2=new form2()
f2.showdialog();
text1.text=a;
}

فرم2

private void text1_change()
{
form1 f1=new form1;
f1.a=text1.text;
}

من اینجا الان ویژال استودیو ندارم. با نوت پد نوشتم. ولی سینتکس کلیش همینه. اگه درست نشد بگو فردا از خونه واست بفرستم برنامشو.

mmd2009
جمعه 02 مهر 1389, 23:09 عصر
با سلام

جوابتون اینه :؟

راستی اینم بگم تو فرم دو برای خروج کافیه با موس خروج کنید اگر هم نیاز داشتید یک دکمه بذارید و کد زیر رو بذارید داخلش من یادم رفتم بذارم ولی چیز مهمی هم نیست چون اوصلا ربطی به اصل ماجرا نداره



this.close();

mmd2009
جمعه 02 مهر 1389, 23:12 عصر
دوست عزيز كدي كه ميفرستم را تست كنيد و بگوييد منظور شما همينه يا نه . البته در مورد نحوه كد نويسي حتما راه هاي بهتري وجود داره

دوست عزیز این جواب اشتباه است.

امینه قاضی زاده
شنبه 03 مهر 1389, 07:09 صبح
با سلام

جوابتون اینه :؟

راستی اینم بگم تو فرم دو برای خروج کافیه با موس خروج کنید اگر هم نیاز داشتید یک دکمه بذارید و کد زیر رو بذارید داخلش من یادم رفتم بذارم ولی چیز مهمی هم نیست چون اوصلا ربطی به اصل ماجرا نداره



this.close();


متشکرم کد شما مشکل من رو حل کرد من تقریبا این راهی که شما گفتید رو امتحان می کردم اما راسش من تو همین برنامه وقتی از متد show برای نمایش فرم استفاده می کنم جواب نمیده چه فرقی با showdialog داره؟؟
بازم مرسی:تشویق::قهقهه:

امینه قاضی زاده
شنبه 03 مهر 1389, 07:16 صبح
فرم1

public string a
{
get;
set;
}

private void button1_click()
{
form2 f2=new form2()
f2.showdialog();
text1.text=a;
}

فرم2

private void text1_change()
{
form1 f1=new form1;
f1.a=text1.text;
}

من اینجا الان ویژال استودیو ندارم. با نوت پد نوشتم. ولی سینتکس کلیش همینه. اگه درست نشد بگو فردا از خونه واست بفرستم برنامشو.
میشه لطف کنید سورسش رو بذارید من متوجه فرم 2 نشدم از تو فرم دو برای تکست چنج فرم 1 کد نوشتید ؟؟

afsharjowkar
شنبه 03 مهر 1389, 07:33 صبح
بهترین روش برای انتقال مقادیر بین دو فرم استفاده از event ها و delegate هست
یه مثال ساده اینجا توی بلاگ خودم میتونید ببینید
http://www.oopc.mihanblog.com/post/22

mmd2009
شنبه 03 مهر 1389, 15:11 عصر
متشکرم کد شما مشکل من رو حل کرد من تقریبا این راهی که شما گفتید رو امتحان می کردم اما راسش من تو همین برنامه وقتی از متد show برای نمایش فرم استفاده می کنم جواب نمیده چه فرقی با showdialog داره؟؟
بازم مرسی:تشویق::قهقهه:

چون وقتی من ShowDialog می کنم عملا اجازه نمیدم کدهای بعد از این کد اجرا بشن تا موقعی که از فرم بعدی خروج نکنم. و وقتی خروج کردم مقدار تکست باکس فرم فعلی رو برابر با پراپریتی فرمی که showDialog شده می کنم و به همین ترتیب مقدار اضافه میشه.