PDA

View Full Version : سوال: مشکل در ری لود کردن فرم



Arashdn
دوشنبه 13 شهریور 1391, 12:31 عصر
سلام
خیلی وقته که با این مشکل درگیرم کلی هم سرچ کردم ولی نتیجه نداد
در برنامه من فرم 1 ، فرم اصلی برنامه هست که موقع لودش یه سری اطلاعات رو از دیتابیس میخونه و در داخل یه سری لیبیل قرار میده
یه فرم 2 هم دارم که اطلاعات دیتابیس رو ویرایش میکنه
چطور میتونم کاری کنم که موقعی که الطلاعات فرم2 در دیتابیس ذخیره شد (در واقع با همون فشار دکمه) فرم 1 دوباره مراحل مربوط به لودش رو انجام بده؟؟
چون فرم 1 فرم اصلی برنامه هست close نمیشه با Hide کردن هم فرقی نکرد
متد دیگه یا روش بهتری هست؟
ممنون

Arashdn
دوشنبه 13 شهریور 1391, 20:17 عصر
یعنی هیچ کس ایده ای نداره؟؟
همه کاربران حرفه ای برنامه هاشونو چطور مینویسن؟

مسعود اقدسی فام
دوشنبه 13 شهریور 1391, 21:16 عصر
عملیات لود اطلاعات فرم یک رو داخل یه تابع بنویسید. فرم یک که بالا می یاد تابع رو فراخوانی کنید تا اطلاعات لود بشه. هر بار هم که کاربر فرم 2 رو می بنده چک کنید. اگه با اوکی بسته شده باشه اون تابع رو دوباره فراخوانی کنید تا لود اطلاعات از نو انجام بشه.
البته روش خیلی زیاده. مثلا اگه حجم اطلاعات ویرایشی کم باشه روش دیگه هم هست. یا اگه تحت شبکه نباشه و نگران ویرایش شدن اطلاعات از کاربر دیگه نباشید روش دیگه هست.

Arashdn
دوشنبه 13 شهریور 1391, 22:11 عصر
عملیات لود اطلاعات فرم یک رو داخل یه تابع بنویسید. فرم یک که بالا می یاد تابع رو فراخوانی کنید تا اطلاعات لود بشه. هر بار هم که کاربر فرم 2 رو می بنده چک کنید. اگه با اوکی بسته شده باشه اون تابع رو دوباره فراخوانی کنید تا لود اطلاعات از نو انجام بشه.
راستش کل عملیات رو نوشتم و نزدیک 3000 خط هست و دوباره نوشتنش سخته
نمیشه خود عملیات لود رو بگیم دوباره اجرا کنه؟

یا اگه تحت شبکه نباشه و نگران ویرایش شدن اطلاعات از کاربر دیگه نباشید روش دیگه هست.
برنامه تحت شبکه نیست ، این روش به چه صورته؟

ممنون

Arashdn
دوشنبه 13 شهریور 1391, 22:16 عصر
راستی یه سوال دیگه
الان لود فرم من حدود 2500 خطه ..
چطور میتونم کاری کنم که progress bar که روی فرم ساختم اول از همه نشون داده بشه و با مراحل پر بشه (پر شدن رو میدونم فقط راهی هست که بشه وادارش کرد اول از همه نشون داده بشه؟)
ممنون

مسعود اقدسی فام
دوشنبه 13 شهریور 1391, 22:56 عصر
راستش کل عملیات رو نوشتم و نزدیک 3000 خط هست و دوباره نوشتنش سخته
نمیشه خود عملیات لود رو بگیم دوباره اجرا کنه؟

برنامه تحت شبکه نیست ، این روش به چه صورته؟

ممنون

منم منظورم عملیات لود بود که دوباره اجرا شه. کات پیست کنید عملیات رو داخل یه تابع بره.

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

Arashdn
دوشنبه 13 شهریور 1391, 23:21 عصر
منم منظورم عملیات لود بود که دوباره اجرا شه. کات پیست کنید عملیات رو داخل یه تابع بره.
دقیقا این تابع رو در کدوم فرم و با چه دستوری باید بسازم؟
ممنون

مسعود اقدسی فام
دوشنبه 13 شهریور 1391, 23:40 عصر
دقیقا این تابع رو در کدوم فرم و با چه دستوری باید بسازم؟
ممنون

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

Mahmoud Zaad
سه شنبه 14 شهریور 1391, 09:25 صبح
سلام
این هم یه نمونه (http://barnamenevis.org/showthread.php?315935-رفرش-کردن-فرم&highlight=%D9%81%D8%B1%D9%85).

Arashdn
سه شنبه 14 شهریور 1391, 09:34 صبح
سلام
از کمک هاتون واقعا ممنونم
تمام کار های لود رو در یک تایع frm1_load گذاشتم و وقتی که در لود خود فرم 1 فراخوانیش میکنم عالی کار میکنه
ولی در فرم 2 که در اخرین مرحله ذخیره ، به شکل زیر فراخوانیش میکنم اصلا فرم 1 هیچ واکنشی نشون نمیده

Form1 nyfrm1 = new Form1();
nyfrm1.frm1_load();
دلیل چی میتونه باشه؟

Arashdn
سه شنبه 14 شهریور 1391, 10:15 صبح
با استفاده از روش
(Application.OpenForms["Form1"] as Form1).MetodeShoma();
کاملا حل شد
ممنون از همه