PDA

View Full Version : سوال: درخواست راهنمایی در مورد ساخت منو در vb.net



nekooee
دوشنبه 19 تیر 1391, 03:02 صبح
سلام

من یک برنامه دارم که چندتا گزینه داره که روی هر کدوم کلیک بشه یک پنجره مربوط به خودش رو باید بیاره.

حالا تو این قسمت موندم که از کدوم باید استفاده کنم.
1- روی گزینه مثلا راهنما که کلیک میشه یک form جدید باز بشه
2- روی راهنما کلیک میشه یک panel به حالت inVisible و panel دیگر به حالت Visible بشه
3- از tabcontrol استفاده و با کلیک بر روی راهنمای tab مخصوص خودش باز بشه

کدام یکی از این روشها بهتر هست؟؟ البته خودم زیاد با گزینه اول موافق نیستم

و اینکه وقتی چندین panel در صفحه داریم اینها در display موقع ویرایش روی هم میفتن و نمیشه کار کرد. آیا میشه به صورت موقت هر کدوم رو که می خوایم در display مخفی کنیم تا بشه روی اون یکی کار کرد؟ منظورم بعد از اجرای برنامه نیست. منظورم داخل ادیتور خود ویژوال استدیو هست.
با تشکر

ROSTAM2
دوشنبه 19 تیر 1391, 05:41 صبح
صبح به خير

يكي از روشها اينه كه بجاي Dialog از UserControl ها استفاده كنيد ...

بصورتي كه اشياء اون ساحته و پرداخته بشه براي هر شئ پراپرتي مخصوص خودش ساخته شه و همينطور رويدادها نيز براي اون ساخته بشه و براي استفاده از آن UserControl در برنامه يك شئ جديد بهمراه صدازدن رويدادهاش ايجاد كنيد

مثال:


Public WithEvents xPanel As New UserControl1 With {.Tag="X",.Dock = Fill[,...]}


كه رويدادهاي اون در برنامه قابل استفاده خواهند بود براي استفاده اگه يك شئ Panel داشته باشيد:


If Me.Panel1.Controls(0).Tag = "X" Then Exit Sub
Me.Panel1.Controls.Add (xPanel)


از رويدادهاي اونم ميشه مثل اشياء ديگه استفاده كرد كه جرء اشياء فرم قرار گرفته

nekooee
دوشنبه 19 تیر 1391, 12:45 عصر
خیلی از پاسخ شما ممنون. شما یک روش غیر از سه روشی که من گفتن انتخاب کردین. راستش من زیاد از این شی و رویداد ها خوشم نمیاد. من خودم برنامه نویس php هستم و با این گونه موارد اونجا سر و کار ندارم. یک کتاب آموزشی از ویژوال بیسک هم خوندم خیلی هم توضیح داده بود اما کلا سر در نیاوردم ازش خیلی گیچ کننده بود. برای این نمیخوام وارد مقوله شی گرایی بشم وقت زیادی هم برای یادگیری کنترلها باید صرف کنم که فعلا وقت ندارم.
در واقع من جواب وسالم رو نگرفتم که کدام یک از موارد بالا بهتره و اینکه چجوری میشه در صفحه ادیتور یک چیز رو مخفی کرد. یعنی کاری به اجرای برنامه ندارم می خوام در محیط دیزاین مثلا یک panel رو که دست و پا گیر هست و فعلا کارش ندارم مخفی کنم؟ این کار شدنی هست یا خیر؟
با تشکر

nekooee
دوشنبه 19 تیر 1391, 13:55 عصر
جدیدا 90 درصد انجمن ها مثل همین انجمن مدیرهاشون اصلا جواب نمیدن. خوب کاربرها هم مسئولیتی ندارن که جواب بدن اگر چیزی به چشمشون بخوره جواب میدن. این روزها کسی بخواد چیزی یاد بگیره فقط باید انگلیسیش رو قوی کنه بره تو انجمنهای انگلیسی زبان پست بزنه. انجمنهای ایرانی خیلی وضعشون خراب شده. حیف که نمیتونم مفهوم سوالم رو به انگلیسی درست برسونم:(

barnamenevisforme
دوشنبه 19 تیر 1391, 14:14 عصر
سلام
دوست عزیز اول اینکه فکر نکنید اگه سوال خودتون رو در یک forum مثل codeproject مطرح کنید خیلی سریع به جوابتون میرسید.چون اینو من تجربه کردم .بگذریم.
اگه شما بخواید یه panel رو در محیط design (تاکید میکنم در محیط طراحی وگرنه با تغییر مشخصه visible میتونید این کار رو برای اجرا انجام بدید)ناپدید کنید امکانش نیست ولی میتونید از ترفند هایی مثل تغییر size (و تغییر اون در موقع اجرا)و یا sendtoback از مزاحمت اون panel خلاص بشید.
حالا بر میگردیم سر اصل سوال:
شما هدفتون از استفاده panel و یا هر روش دیگه ای برای هر بخش چیه؟آیا فقط میخواید توضیحات متنی ارائه بدید؟در این صورت از tooltip استفاده کنید.
اگه میخواید منو ارائه بدید از contexmenustrip استفاده کنید.
موفق باشید.

nekooee
دوشنبه 19 تیر 1391, 15:16 عصر
سلام
نه متوجه منظور من نشدید. اول اینکه اگه نشه یک پنل رو در محیط دیزاین مخفی کرد خیلی بد میشه. ببینید من یک contexmenustrip درست کردم ولی زیر مجموعه ای این منو نداره در واقع فقط عنوان اصلی منوها هستند که روی هر عنوان کلیک کنید محتوای form عوض میشه.
مثلا فرض کنید دارم: صدور قبض و صدور فاکتور. حالا وقتی روی صدور قبض کلیک میکنم باید محتوای مربوط به خودش نشان داده بشه و همینطور برای فاکتور. اولین راه حال من فراخواندن یک فرم برای هر کدوم از این گزینه ها بود. که دیدم اینجور روی هر کدوم کلیک کنی یک پنجره جدید باز میشه بهتر دیدم که داخل همون فروم اصلی محتوا تغییر کنه.
آمدم از دو تا panel استفاده کردم که وقتی روی صدور فاکتور کلیک میکنم پنل قبض مخفی و پنل فاکتور ظاهر بشه. خوب این روش جواب داد ولی مشکل اینجا بود این دو پنل دقیقا روی هم قرار میگرفتند و در محیط دیزاین اصلا نمیشد روشون کار کرد. و متاسفانه نمیشه هر کدوم رو مثل یک لایه در محیط دیزاین مخفی کرد. اگر بخوام تغییر سایزش بدم که همه چیز میریزه به هم و این کار فایده نداره....
روش بعد استفاده از TabContorol بود که این روش هم چون خودش تب و عنوان داره عملا منوی من بیخاصیت میشه و باید عنوانها رو داخل خود تب قرار بدم که باز هم بدرد نمیخوره....

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

لطفا یک روش رو برام توضیح بدید که من بتونم استفاده کنم یا روش این دوستمون رو بگید دقیقا این کدها رو کجا باید قرار بدم

nekooee
دوشنبه 19 تیر 1391, 17:10 عصر
بعد از کلی تحقیق به این نتیحه رسیدم دوستمون در پست اول هم در مورد عملکرد منو ها توضیح دادند و متوجه منظور من نشدند چون چیزی که ایشون گفتند فکر نمیکنم کاری که من بخوام بکنه! ببینید شما اصلا فرض کنید منو نیست و یک کلید هست من می خوام کلید رو که فشار دادم محتوای form عوض بشه. الآن باید چیکار کنم؟ درضمن نمیخوام فرم جدید باز بشه می خوام محتوای همون فرم عوض بشه

barnamenevisforme
دوشنبه 19 تیر 1391, 17:36 عصر
سلام
اینم نحوه ساختن یه panel که بتونیم در محیط design هم اون ناپدید کنیم.
در این نمونه از یه customcontrol استفاده شده که خصوصیات panel رو به ارث میبره.
واسه پدیدار شدن و یا ناپدید شدن این کنترل،در پنجره properties از لیست مربوطه نام panel مورد نظر رو انتخاب میکنید بعد،design_view_visible اونو که یه خصوصیت اضافه شدست true یا false کنید.
89447
این یه نمونه سادست،حالا شما خودتون اینو میتونید بسطش بدید.

nekooee
دوشنبه 19 تیر 1391, 18:02 عصر
از همه دوستانی که کمک کردند خیلی ممنون هستم. در مورد اولی که یاد گرفتم یک یوزر کنترل درست میکنم و تمام کارهایی که می خوام انجام بشه داخل اون انجام میدم و به صورتdll ذخیره میکنم و داخل پروژه اصلی فراخوانی میکنم. اینجوری میشه راحت استفاده کرد.

و این مورد دوم هم که شما گذاشتید دقیقا همون کار رو به روش پنل انجام میده و با زهم کار من رو راه میندازه.

از همتون ممنونم خیلی امروز چیز جدید یاد گرفتم ولی تا آخر این برنامه سوال زیاد دارم و مجبورم باز مزاحمتون بشم.

در مورد یوزر کنترل هم بقیه دوستان اگر خواستن یاد بگیرن این فیلم فارسی رو توصیه میکنم:

http://www.rasekhoon.net/song/download-61862.aspx (http://www.rasekhoon.net/song/download-61862.aspx)