PDA

View Full Version : سوال: روش های باز کردن فرم های مختلف در فرم اصلی



hossein_sh2008
جمعه 17 خرداد 1392, 14:53 عصر
با سلام دوستان
من در حال ساختن یک برنامه حسابداری هستم که به یک مشکلاتی در نحوه باز شدن فرم ها دارم،مثل در حال حاضر فرم ها رو show ویا فرمی که رو هست رو showdialog می کنم تا رو قرار بگیره و انتخابم رو انجام و دوباره به صفحه اصلی بر می گرده
آیا امکانش هست روشی بهتر از این روش رو دوستان پیشنهاد و یک نمونه ساده از اون رو توضیح بدهند
آخه در این روش وقتی سه چهار فرم در هم باز می شوند توی taskbar هم چندین فرم باز میشه (ولی میشه اون رو در تسکبار نشون ندیم که کار درستی هم نیست)
یک روش دیگه استفاده از فرم والد هست که بازم توی سی شارپ خیلی روش کار نکردم و نمی دونم دقیقا در نرم افزارهای بازاری به کدوم روش هستش

روش دیگه که تصویرش رو هم پیوست کردم توی خیلی از نرم افزار ها دیدیم (مانند نرم افزار توصیفی و دانا مدارس و...)،آیا برای حسابداری جوابگو هست و اگر هست به چه صورت پیاده سازی میشه؟
یا روش های جوابگو دیگه
با تشکر
منتظر نقد و پاسخگویی شما دوستان هستم
105254

یا

105255

http://barnamenevis.org/images/misc/pencil.png

khokhan
جمعه 17 خرداد 1392, 16:17 عصر
با سلام دوستان
من در حال ساختن یک برنامه حسابداری هستم که به یک مشکلاتی در نحوه باز شدن فرم ها دارم،مثل در حال حاضر فرم ها رو show ویا فرمی که رو هست رو showdialog می کنم تا رو قرار بگیره و انتخابم رو انجام و دوباره به صفحه اصلی بر می گرده
آیا امکانش هست روشی بهتر از این روش رو دوستان پیشنهاد و یک نمونه ساده از اون رو توضیح بدهند
آخه در این روش وقتی سه چهار فرم در هم باز می شوند توی taskbar هم چندین فرم باز میشه (ولی میشه اون رو در تسکبار نشون ندیم که کار درستی هم نیست)
یک روش دیگه استفاده از فرم والد هست که بازم توی سی شارپ خیلی روش کار نکردم و نمی دونم دقیقا در نرم افزارهای بازاری به کدوم روش هستش

روش دیگه که تصویرش رو هم پیوست کردم توی خیلی از نرم افزار ها دیدیم (مانند نرم افزار توصیفی و دانا مدارس و...)،آیا برای حسابداری جوابگو هست و اگر هست به چه صورت پیاده سازی میشه؟
یا روش های جوابگو دیگه
با تشکر
منتظر نقد و پاسخگویی شما دوستان هستم
105254

یا

105255

http://barnamenevis.org/images/misc/pencil.png
در فرم اصلی یه پانل بگذار و بقیه فرمهارو داخل پنل بازکن . این روش مخصوصا در فرمهای mdi خوبه


Form2 frm = new Form2();
frm.Dock = DockStyle.Fill;
this.panel1.Controls.Clear();
this.panel1.Controls.Add(frm);
frm.Show();

hossein_sh2008
شنبه 18 خرداد 1392, 11:45 صبح
ممنون دوست عزيز از اينكه پاسخ دادين
ولي اندازه فرم ها بزرگ هست چي ميشه؟(آيا اسكرول مياد؟ كه اگر مياد يه خورد بد ميشه)و آيا خصوصيات فرم داخلش رعايت ميشه و ميشه باهاش مثل يك فرم برخورد كرد مثل بستن و...
ميشه بيشتر توضيح بدين

آخه خطاي زير رو ميده

105266


آيا نبايد يك تنظيملت خاصي يا كدي به فرم ها اضافه كنيم؟
با تشكر

f.beigirad
شنبه 18 خرداد 1392, 15:31 عصر
اینم اضافه کن قبل Add کردن:

frm.TopLevel=false;

khokhan
شنبه 18 خرداد 1392, 15:40 عصر
آيا نبايد يك تنظيملت خاصي يا كدي به فرم ها اضافه كنيم؟
با تشكر

سلام

ببینین شما بایستی خاصیت dock فرم فرزند و پنلی که در فرم والد قرار دادین وقراره که فرمهای فرزند درون اون باز بشند رو یکسان کنین تا هنگام اجرای فرمها نا هماهنگی بوجود نیاد
همچنین در ابتدای اجرای برنامه ودر رویداد load فرم والد خاصیت Visible پنل رو false قرار بدین بعد که خواستین فرم فرزند رو اجرا بکنین در ابتدای دستورات مربوطه این خاصیت رو بالافاصله true بکنین

ودر نهایت هنگام بستن فرمهای فرزند دوباره کاری کنین تا Visible پنل هم به همراه فرم بسته شده مقدار false بگیره

بمانند این نمونه :لبخند:

hossein_sh2008
شنبه 18 خرداد 1392, 20:43 عصر
سلام
دوستان من اين فرم رو اجرا كردم ولي اندازه فرم من به هم ميريزه و اندازه پنل ميشه و بزرگ ميشه آيا امكانش هست يك راه حلي براي بهم نريختن اندازه فرم هام و بر طرف كردن اين مشكل ارائه بدين (اخه بعضي فرم ها خيلي از پنل بزرگ تر و بعضي كوچيكتر هستن)

راستي آيا اين روش باز كردن فرم در پنل اين اجازه رو به ما ميده كه در همان لحظه از درون فرم فرزند يك فرم ديگه باز كنيم براي انتخاب يه چيزي از ليست(مثل انتخاب كالا در فاكتور يا ...)
ممنون از پاسوخگوييتون

khokhan
شنبه 18 خرداد 1392, 20:55 عصر
سلام
دوستان من اين فرم رو اجرا كردم ولي اندازه فرم من به هم ميريزه و اندازه پنل ميشه و بزرگ ميشه آيا امكانش هست يك راه حلي براي بهم نريختن اندازه فرم هام و بر طرف كردن اين مشكل ارائه بدين (اخه بعضي فرم ها خيلي از پنل بزرگ تر و بعضي كوچيكتر هستن)

راستي آيا اين روش باز كردن فرم در پنل اين اجازه رو به ما ميده كه در همان لحظه از درون فرم فرزند يك فرم ديگه باز كنيم براي انتخاب يه چيزي از ليست(مثل انتخاب كالا در فاكتور يا ...)
ممنون از پاسوخگوييتون

آره اونم راه داره عزیز :لبخند:

hossein_sh2008
یک شنبه 19 خرداد 1392, 11:53 صبح
آره اونم راه داره عزیز :لبخند:

دوست عزيز ممنون از اينكه جواب ميدين
راهش چيه؟

khokhan
یک شنبه 26 خرداد 1392, 20:27 عصر
دوست عزيز ممنون از اينكه جواب ميدين
راهش چيه؟

سلام

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


frm.Dock = DockStyle.Fill;
this.panel1.Dock = DockStyle.Fill;

واما اینکه بشه از داخل فرم فرزند فرم دیگری رو در درون فرم والد باز کرد این نمونه رو ملاحظه بفرمائید

hossein_sh2008
دوشنبه 27 خرداد 1392, 11:20 صبح
ممنون از پاسختون
اما به نظر من خيلي جالب نيست ،اگر بخوايم به طور كلي از قائده پدر فرزندي استفاده كنيم به چه صورت خواهد شد،يعني فرم اصلي پدر و فرم هاي ديگر داخل اون باز شوند مثل همه نرم افزار ها(نه داخل پنل)

ميشه يه توضيح يا نمونه كدي بذارين

با تشكر

ali_md110
دوشنبه 27 خرداد 1392, 12:47 عصر
جهت مبادله اطلاعات بین چند کلاس یا فرم میتونید از delegate ها استفاده کنید خیلی انعطاف بیشتری داره در ضمن چون delegate به عنوان نماینده یک کلاس عمل میکنه به تمام خواص -متد-و اشیا یک کلاس در کلاس دیگه دسترسی داره
در ضمن delegate رابطه خوبی با event ها دارند
یک مثال میزنم:اگر در بیشتر نرم افزارهای حسابداری دیده باشید یک کومبو باکس جهت انتخاب لیست مشتریان وجود دارد که به محض تایپ کردن در این کمبو باکس لیستی نشون داده میشه شبیه یک فرم که توی این فرم کوچولو دکمه های دیگه با یک تکست باکس جهت چستچوی مشتری و ارسال به فرم اول و نمایش در کامبوباکس مشتریان هست

در فرم جستجو همزمان با جستجو در تکست باکس داده به فرم یک ارسال و در فرم 1 میتوان نتیجه جستجو را در کومبو باکس مشاهده کرد

hossein_sh2008
دوشنبه 27 خرداد 1392, 16:00 عصر
ممنون از پاسختون،آيا امكانش هست كه يك نمونه كوچيك مثال بزنيد
و در مورد رابطه پدر فرزندي و نحوه استفاده آن توضيحي بدين

با تشكر