PDA

View Full Version : ارتباط فرم ها با یکدیگر



hozouri
یک شنبه 02 تیر 1387, 17:03 عصر
سلام بر دوستان
من یه فرم اصلی به نام A دارم میخوام در وسط برنامه یه فرم B رو فراخوانی و نمایش بده من حالا میخوام بدونم فرم B چطور می تونه فرم A رو تشخیص بده یا با اون ارتباط بر قرار کنه مثلاً وقتی در فرم B (که در وسط برنامه و توسط فرم A فراخوانی شد) محتویات یک تکس باکس رو تغییر میدم در فرم A یه تکس باکس محتویاتش تغییر کنه.
دوستان اگر راهنمایی کنند و نام این تکنولوژی رو بگند و چند تا مقاله در ارتباط باهاش به من معرفی کنند خیلی ممنون می شم.

ASKaffash
یک شنبه 02 تیر 1387, 17:13 عصر
سلام
فرم A را به عنوان ورودی در Constructor فرم B ارسال کنید ودر داخل Constructor در یک متغیر Private در سطح فرم A نگهداری کنید و در ضمن TextBox مورد نظر در فرم A را با Modifier ازنوع Internal یا Public تنظیم کنید حال با استفاده از متغیر Private درون فرم B شما کاملا بر TextBox مسلط خواهید بود

hozouri
یک شنبه 02 تیر 1387, 17:20 عصر
ممنون و اگر نام این تکنولوژی رو بگید لطف کردید...

ASKaffash
یک شنبه 02 تیر 1387, 17:27 عصر
سلام
دوست من این تکنولوژی نیست مفاهیم DotNetFrameWork به همراه OOP است در Help خود MSDN از اینکارها زیاد انجام میدهد

اَرژنگ
یک شنبه 02 تیر 1387, 19:08 عصر
سلام
فرم A را به عنوان ورودی در Constructor فرم B ارسال کنید ودر داخل Constructor در یک متغیر Private در سطح فرم A نگهداری کنید و در ضمن TextBox مورد نظر در فرم A را با Modifier ازنوع Internal یا Public تنظیم کنید حال با استفاده از متغیر Private درون فرم B شما کاملا بر TextBox مسلط خواهید بود

بارها اشتباه بودن این روش در اینجا بیان شده و مقالات هم برایه روشهایه درست فرستاده شده، اگر لینک معتبری برایه این روش میشناسید لطفا بفرستید.

اَرژنگ
یک شنبه 02 تیر 1387, 19:10 عصر
سلام
دوست من این تکنولوژی نیست مفاهیم DotNetFrameWork به همراه OOP است در Help خود MSDN از اینکارها زیاد انجام میدهد

لینک به MSDN در این مورد بفرستید.

احمد سامعی
یک شنبه 02 تیر 1387, 20:09 عصر
بارها اشتباه بودن این روش در اینجا بیان شده و مقالات هم برایه روشهایه درست فرستاده شده، اگر لینک معتبری برایه این روش میشناسید لطفا بفرستید.

سلام استاد:
می شه راه حل درست را بفرمائید، تا هم من هم جناب hozouri هم بقیه دوستان یاد بگیرند
چون روش گفته شده در بالا ظاهراً با مفهوم شی گرایی در #C متضاد هست

در دات نت 2005 به بالا فکر کنم یک راه حل استفاده از متغییرات setting باشه که از کل برنامه و تمام فرم ها قابل دسترس هستند !؟؟

Sajjad.Aghapour
یک شنبه 02 تیر 1387, 20:13 عصر
من یه فرم اصلی به نام A دارم میخوام در وسط برنامه یه فرم B رو فراخوانی و نمایش بده من حالا میخوام بدونم فرم B چطور می تونه فرم A رو تشخیص بده یا با اون ارتباط بر قرار کنه مثلاً وقتی در فرم B (که در وسط برنامه و توسط فرم A فراخوانی شد) محتویات یک تکس باکس رو تغییر میدم در فرم A یه تکس باکس محتویاتش تغییر کنه.


مقاله ای در این مورد از اقای کیانی(ObjectRelations)
http://barnamenevis.org/forum/attachment.php?attachmentid=13638&d=1200233621
لینک تاپیک
http://barnamenevis.org/forum/showthread.php?t=91138

razavi_university
دوشنبه 03 تیر 1387, 00:30 صبح
فکر کنم در مقیاس بزرگتر اینکارهارو با WCF (http://en.wikipedia.org/wiki/Windows_Communication_Foundation)انجام میشه

البته شاید برای کار شما این مثال از CodeProject بد نباشه
Using a delegate to pass data between two forms (http://www.codeproject.com/KB/cs/passdatadelegate.aspx)

اَرژنگ
دوشنبه 03 تیر 1387, 05:17 صبح
فکر کنم در مقیاس بزرگتر اینکارهارو با WCF (http://en.wikipedia.org/wiki/Windows_Communication_Foundation)انجام میشه

البته شاید برای کار شما این مثال از CodeProject بد نباشه
Using a delegate to pass data between two forms (http://www.codeproject.com/KB/cs/passdatadelegate.aspx)

استفاده از WCF فایده‌ای به این مسعله اضافه نمیکند. مثال کد پروژکت دارد از ابزرور پترن استفاد میکند، منتها نویسندش در مورد پترن آگاهی ندارد وگرنه بهش اشاره میکرد، در ضمن دلیل استفاده از ابزرور پترن دلایل دیگری دارد که به این مسعله ربطی ندارد.

ASKaffash
دوشنبه 03 تیر 1387, 07:30 صبح
سلام
آقای آرژنگ شما یک کد ساده قرار دهید که همه یاد بگیرند.

اَرژنگ
دوشنبه 03 تیر 1387, 13:01 عصر
سلام
آقای آرژنگ شما یک کد ساده قرار دهید که همه یاد بگیرند.

محض رضایه خدا جستجو ، پژوهش مقاله جناب کیانی http://barnamenevis.org/forum/showthread.php?t=91138

ASKaffash
دوشنبه 03 تیر 1387, 13:32 عصر
محض رضایه خدا جستجو ، پژوهش مقاله جناب کیانی http://barnamenevis.org/forum/showthread.php?t=91138

با سلام
محض رضای خدا قبل از نوشته شما کامل PDF را مطالعه کردم میخواستم شما یک کد ساده در پاسخ دوستمان قرار دهید تا برای هم مفید واقع شود

اَرژنگ
دوشنبه 03 تیر 1387, 14:05 عصر
با سلام
محض رضای خدا قبل از نوشته شما کامل PDF را مطالعه کردم میخواستم شما یک کد ساده در پاسخ دوستمان قرار دهید تا برای هم مفید واقع شود

چشم: http://barnamenevis.org/forum/showthread.php?t=88552 پست پنجم

ASKaffash
دوشنبه 03 تیر 1387, 17:05 عصر
سلام
کد مورد نظر را کاملا مطالعه کردم واز ShowDialog() استفاده میکند اما اگر از Show استفاده کنیم راه حل چیست ؟

Mahdi.Kiani
دوشنبه 03 تیر 1387, 17:29 عصر
یه Event در فرم2 تعریف کن و در فرم1 هندلش کن...

اَرژنگ
دوشنبه 03 تیر 1387, 18:03 عصر
سلام
کد مورد نظر را کاملا مطالعه کردم واز ShowDialog() استفاده میکند اما اگر از Show استفاده کنیم راه حل چیست ؟

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

پ.ن : راهی که جناب کیانی پینشهاد کردند به نظر من بهترین روشه، منتها الان ساعت ۱۲ شبه و چشمهام دارند هیلی پیلی میرند، یک چیزی سرهم کردم فرستادم، جواب بهتر ساده‌ترین پیاده سازی راهی است که جناب کیانی فرمودند.

ASKaffash
سه شنبه 04 تیر 1387, 10:31 صبح
یه Event در فرم2 تعریف کن و در فرم1 هندلش کن...
سلام
چناب کیانی لطفا در صورت مقدور یک کمی بیشتر روش را تشریح نمائید

hosseini_87
سه شنبه 04 تیر 1387, 16:36 عصر
سلام بچه ها
من می خوام یه مقدار رو از ورودی بگیرم به تمام فرم ها ارسال کنم
در واقع می خوام کاربر وقتی وارد برنامه می شه رمز ورودش رو وارد کنه
بعد هرکاری که انجام داد و قراره ثبت شه تو هر فرمی از برنامه هست کد کاربری معادل با رمزش ذخیره بشه
تورو خدا کمکم کنید پروژه ی پایان تحصیلاتم رو دارم می نویسم اگه تا 15 تیر تمومش نکنم فارغ التحصیلیم عقب می افته
بچه ها منتظر کمکتون هستم

اَرژنگ
سه شنبه 04 تیر 1387, 16:49 عصر
سلام بچه ها
من می خوام یه مقدار رو از ورودی بگیرم به تمام فرم ها ارسال کنم
در واقع می خوام کاربر وقتی وارد برنامه می شه رمز ورودش رو وارد کنه
بعد هرکاری که انجام داد و قراره ثبت شه تو هر فرمی از برنامه هست کد کاربری معادل با رمزش ذخیره بشه
تورو خدا کمکم کنید پروژه ی پایان تحصیلاتم رو دارم می نویسم اگه تا 15 تیر تمومش نکنم فارغ التحصیلیم عقب می افته
بچه ها منتظر کمکتون هستم

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

hosseini_87
چهارشنبه 05 تیر 1387, 02:46 صبح
ببیند من دارم یه برنامه ای می نویسم واسه یه اداره که کارمنداش از اون استفاده کنن
و هر کارمندی هر کاری انجام داد مثلا تو قسمت حسابداری پولی برداشت کرد کد کارمندی اون ذخیره بشه
یعنی این کارمند نتونه از حساب اداره برداشت کنه ولی کد یکی دیگه رو وارد کنه
واسه همین هرکارمندی یه رمز عبور داره که فقط خودش و مدیر اداره از اون با خبرن
حالا شما می گید چکار کنم
تو تک تک فرما از کاربر بخوام رمز خودشو وارد کنه یا اینکه فقط تو صفحه ی اول که برنامه رو باز کرد رمز عبورش رو وارد کنه؟
تازه یه چیز دیگه هم اینه که کارمند باید تو صفحه اول رمزش رو وارد کنه بعد طبق رمزش به یه سری فرمها دسترسی داشته باشه و به یه سری دیگه نداشته باشه
فک می کنم دیگه به اندازه کافی در مورد مشکلم توضیح داده باشم
ممنون میشم اگه کسی کمکم کنه

اَرژنگ
چهارشنبه 05 تیر 1387, 05:07 صبح
ببیند من دارم یه برنامه ای می نویسم واسه یه اداره که کارمنداش از اون استفاده کنن
و هر کارمندی هر کاری انجام داد مثلا تو قسمت حسابداری پولی برداشت کرد کد کارمندی اون ذخیره بشه
یعنی این کارمند نتونه از حساب اداره برداشت کنه ولی کد یکی دیگه رو وارد کنه
واسه همین هرکارمندی یه رمز عبور داره که فقط خودش و مدیر اداره از اون با خبرن
حالا شما می گید چکار کنم
تو تک تک فرما از کاربر بخوام رمز خودشو وارد کنه یا اینکه فقط تو صفحه ی اول که برنامه رو باز کرد رمز عبورش رو وارد کنه؟
تازه یه چیز دیگه هم اینه که کارمند باید تو صفحه اول رمزش رو وارد کنه بعد طبق رمزش به یه سری فرمها دسترسی داشته باشه و به یه سری دیگه نداشته باشه
فک می کنم دیگه به اندازه کافی در مورد مشکلم توضیح داده باشم
ممنون میشم اگه کسی کمکم کنه

روشی که میخواهید این برنامه را بنویسید اشتباه است، از روشهایه لایه نویسی باید استفاده کنید، در موورد ذخیره کردن رمز، یکبار در موقع شروع برنامه در ستیننگ ذخیره اش میکنید و همان.
به برنامه نویسی لایه باید نگاه بندازید. اصلا مشکل شما در مورد طراحی برنامه ‌است به ارتباط بین فرمها ربط ندارد.

hosseini_87
چهارشنبه 05 تیر 1387, 14:41 عصر
جناب آرژنگ از شما ممنون میرم که تو برتامه نویسی لایه مطالعه ای داشته باشم
التماس دعا

Mahdi.Kiani
چهارشنبه 05 تیر 1387, 14:45 عصر
سلام
چناب کیانی لطفا در صورت مقدور یک کمی بیشتر روش را تشریح نمائید

یه نمونه فرستادم
موفق باشید

Mahdi.Kiani
پنج شنبه 06 تیر 1387, 09:43 صبح
سلام
ممنون جناب آرژنگ
.....
ولی این مسئله را بار دیگر در مثالی دیگر متذکر شدم که هر چیزی را در جای خودش به کار ببریم بهتر است...



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


صحیح
این دیتا فقط به یک صورت و صرف همین مثال نوشته شده....


ترکیب سینگلتون پترن با این مثال فکر می کنم که فقط مطلب را برای دوستمون مشکل و مبهم تر می کرد...
چون اگر صحیح تر بخواهیم بگوییم، بهتر است برای یک چنین مواردی از الگو های Observer ای نظیر MVC استفاده شود....

به عنوان مثال اگر تعداد نمونه های گرفته شده از فرم 2 بیشتر باشد و یا فرم هایی که در آن واحد باید بر اساس دیتای فرم1آ آپدیت شوند، بیشتر از یک فرم باشند، استفاده از روش فوق مناسب نمی باشد...

در ابتدا، قصد نبود که دیتا از فرم1 به فرم2 هم فرستاده شود، ( چون مورد سوال تاپیک به این موضوع اشاره ای نکرده بود) ولی چون حدس زدم ممکنه که چند روز دیگه سوالی مشابه همین پیش آید، با یک متد ساده، این عمل را انجام دادم..

در کل فکر کنم مثال خوبی برای کاربرانی که در این مورد مشکل داشتند، بود..
با تشکر

اَرژنگ
پنج شنبه 06 تیر 1387, 10:13 صبح
سلام
ممنون جناب آرژنگ
.....
ولی این مسئله را بار دیگر در مثالی دیگر متذکر شدم که هر چیزی را در جای خودش به کار ببریم بهتر است...

ترکیب سینگلتون پترن با این مثال فکر می کنم که فقط مطلب را برای دوستمون مشکل و مبهم تر می کرد...
چون اگر صحیح تر بخواهیم بگوییم، بهتر است برای یک چنین مواردی از الگو های Observer ای نظیر MVC استفاده شود....

به عنوان مثال اگر تعداد نمونه های گرفته شده از فرم 2 بیشتر باشد و یا فرم هایی که در آن واحد باید بر اساس دیتای فرم1آ آپدیت شوند، بیشتر از یک فرم باشند، استفاده از روش فوق مناسب نمی باشد...

در ابتدا، قصد نبود که دیتا از فرم1 به فرم2 هم فرستاده شود، ( چون مورد سوال تاپیک به این موضوع اشاره ای نکرده بود) ولی چون حدس زدم ممکنه که چند روز دیگه سوالی مشابه همین پیش آید، با یک متد ساده، این عمل را انجام دادم..

در کل فکر کنم مثال خوبی برای کاربرانی که در این مورد مشکل داشتند، بود..
با تشکر
البته که مثال خوبی است! یکمی خوشگلترش کنیم همه دعامان میکنند.
بعدش هم هرکی در مورد سینگلتن و یا اتباط بین فرمها سوال کند میفرستیمش سراغ همین یک مثال، سینگلتن به خودی خود خالیه، اینجا میشه کاربردش را برایه کار حسابی نشان داد.
از روشی که استفاده کردید که فرم بعدی را نشان بدید خوشم آمد، روش باحالیه