PDA

View Full Version : عوض کردن محتویات یک فرم به وسیله یک buttom



prince0fpersia
چهارشنبه 11 بهمن 1391, 11:59 صبح
سلام

من میخوام یک برنامه مالتی مدیا با C# درست کنم . میخوام یک فرم طراحی کنم که توش گزینه های next و preview بذارم تا کاربر وقتی کلیک کرد ، کل محتویات روی فرم عوض بشه و محتویات جدیدی روش قرار بگیره . یعنی یک پروژه چند صفحه ای که محتویات هر صفحه متفاوت است . اما نمیخوام چند فرم جدا باز بشه و میخوام همه این تعییرات روی یک فرم اعمال بشه . مثل همه برنامه های چند رسانه ای دیگه

و با مثلا اگر بخوام این کار رو بدون کلیک انجام بدم . بعنی وقتی کاربر برنامه رو باز میکنه ابتدا یک ویدیو چند ثانیه ای پخش بشه و بعد که تموم شد گزینه ها و منو های برنامه روی فرم ظاهر بشه .

چه طور باید این کار رو انجام بدم؟


همچنین اگر بخوام با حرکت موس روی برخی دکمه ها یا منو ها یا .... یک فایل صوتی راهنما پخش بشه چه طور باید این کار رو انجام بدم؟

با تشکر فراوان

asghar2008
چهارشنبه 11 بهمن 1391, 12:22 عصر
سلام

این واسه خودش یه پروژه است !

تا جایی که من یادمه برا این کارا بهترین نرم افزار ها استفاده از Multimedia و Autoplay است.البته با #C هم میشه این کارارو انجام داد.اگه میخوای زودتر به نتیجه برسی از اون نرم افزارا استفاده کن.

prince0fpersia
چهارشنبه 11 بهمن 1391, 13:06 عصر
یعنی اینقدر سخته ؟ :لبخند:

آخه من قبلا پروپزال این پروژه رو به استاد دادم و گفتم با سی شارپ میزنم و الان چند روز مونده به تحویل یهو با یه چیز دیگه کار کنم داستان میشه .
دوست عزیز راجع به اون hide و show متوجه نشدم میشه یکم بیشتر توضیح بدی . فکر کنم راه خوبی باشه

mp_mp353
چهارشنبه 11 بهمن 1391, 13:20 عصر
دوست عزیز شما میتونید از UserControl ها استفاده کنید کار باهاش سخت نیست. هم میتونید در حین اجرای برنامه از UserControl مورد نظرتون جدید ایجاد و نمایش بدید و هم میتونید اونا رو روی فرم قرار داده و show ، hide شون کنید.

asghar2008
چهارشنبه 11 بهمن 1391, 14:06 عصر
یعنی اینقدر سخته ؟ :لبخند:


واسه کسی که بلده و وارد هیچی نیست.ولی وقتی من خودمو جای شما میذارم میبنم بهترین و راحت ترین کار استفاده از Autoplay Media studio است با اون نرم افزار خیلی آسون در حد 10 الی 20 مین آماده میشه.


آخه من قبلا پروپزال این پروژه رو به استاد دادم و گفتم با سی شارپ میزنم و الان چند روز مونده به تحویل یهو با یه چیز دیگه کار کنم داستان میشه .
دوست عزیز راجع به اون hide و show متوجه نشدم میشه یکم بیشتر توضیح بدی . فکر کنم راه خوبی باشه

منظور ایشون این بود که اون آیتم هایی رو که در مرحله اول رو فرم دیده میشه رو موقعی که کاربر بر روی Next کلیک کرد مخفی بشن و آیتم های بعدی نمایش داده بشن

khokhan
چهارشنبه 11 بهمن 1391, 14:25 عصر
باسلام
بهتره گزینه برای این کار استفاده از "فرمهای mdi " یا همون مادر و فرزن هستش

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

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

prince0fpersia
چهارشنبه 11 بهمن 1391, 14:42 عصر
باسلام
بهتره گزینه برای این کار استفاده از "فرمهای mdi " یا همون مادر و فرزن هستش

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

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

فکر میکنم این گزینه ی بهتری باشه
اما چطور باید اینکارو کنم

البته من انتظار ندارم اینجا کامل توضیح بدید ، اما اگر بگید مربوط به چه مبحثی میشه و چه چیزی رو باید جستجو کنم ممنون میشم

***در مورد user control هم که دوستان گفتن جستجو کردم و از روی یه آموزش یک پروژه WindowsFormLibraryControl ساختم و ذخیره کردم و بعد یک فرم جدید (چه داخل اون solution و چه خارج از اون ساختم و سعی کردم اون لایبرری که درست کردم رو توی toolbox پیدا کنم اما موفق نشدم!!!

به نظر خودم هم چنتال فرم مجزا داشته باشیم که داخل یک فرم مادر باز و بسته بشه بهتر باشه تا اینکه یکسری آیکن هارو هربار مخفی و پیدا کنیم ...البته نظر شخصیه و اصلا فنی نیست!! و نمیدونم کدوم راه مهندسی تر و بهتره؟

sasan_22
چهارشنبه 11 بهمن 1391, 15:00 عصر
البته یه راه (غیرمنطقی) هم هست اونم اینه که توی فرمت آیتمهای مربوط به هر گروه رو توی گروب باکس بذاری و با دکمه های Next یا Preview مخفی یا نمایشش بدی:متفکر:

asghar2008
چهارشنبه 11 بهمن 1391, 15:06 عصر
باسلام
بهتره گزینه برای این کار استفاده از "فرمهای mdi " یا همون مادر و فرزن هستش

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

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

به نظر من این روش هم ساده تر و اصولی تر.

خاصیت FormBorderstyle فرم های فرزند رو برابر None قرار بده. بعد داخل هرفرم فرزند اون یکی فرم هارو فراخوانی کن.

prince0fpersia
چهارشنبه 11 بهمن 1391, 15:14 عصر
من الان این برنامه رو پیدا کردم ، تقریبا چیزی هست که میخوام اما چندتا مشکل دارم .

1- چطور اون کادر بالای فرم های داخلی رو (دکمه های کلوز و مینیمایز و ....) از بین ببرم ؟ یعنی اصلا فرم داخلی هیچ حاشیه ای نداشته باششه
2-چکار کنم فرم های داخلی دقیقا فیت فرم اصلی بشند موقع باز شدن و همچنین قابل resize یا movieing نباشند؟

prince0fpersia
چهارشنبه 11 بهمن 1391, 15:18 عصر
برنامه ضمیمه شد

asghar2008
چهارشنبه 11 بهمن 1391, 15:24 عصر
بالا که گفتم(پست 9)

خاصیت FormBorderstyle فرم های فرزند رو برابر None قرار بده.

وخاصیت Windowstate رو در حالت Maximized قرار بده

prince0fpersia
چهارشنبه 11 بهمن 1391, 15:36 عصر
هنوز فرم داخلی به اندازه ای که توی سایز نوشته باز میشه

khokhan
چهارشنبه 11 بهمن 1391, 15:48 عصر
هنوز فرم داخلی به اندازه ای که توی سایز نوشته باز میشه

سلام مجدد دارم خدمت عزیزان

من چند وقت پیش این فرم رو برای یکی از دوستان تو همین سایت ساخته بودم

ببین به کارت می آد

بازم اگه مشکلی داشت بگو

prince0fpersia
چهارشنبه 11 بهمن 1391, 16:54 عصر
ببخشید دوستان ، با چه دستوری باید فرم های دلخواه رو باز و بسته کنم ؟ یعنی میخوام اون دستور رو توی دکمه هایی که روی فرم مادر میذارم قرار بدم تا با کلیک فرم دلخواه باز بشه داخل فرم مادر

و اینکه چطور فرم جدیدی به فرم مادر اضافه کنم ؟

prince0fpersia
پنج شنبه 12 بهمن 1391, 09:49 صبح
دوستان سوال آخرم رو هم اگر میشه جواب بدید

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

asghar2008
پنج شنبه 12 بهمن 1391, 10:06 صبح
سلام

ابتدا در فرم اصلی IsMdicontaner=true قرار بده

بعد روی دکمه باز کردن فرم فرزند از این کد ها استفاده کن
برای باز کردن فرم :


form1.mdiparent=parentForm
form1.show();




برای بسته شدن :

form1.close();

parentForm نام فرم مادر است.

prince0fpersia
پنج شنبه 12 بهمن 1391, 10:57 صبح
سلام

دوست عزیز آیا کتابی ، مغاله ای ، سایتی روی اینترنت هست که در اینباره توضیحات کاملی داده باشه؟

wolf_majid
پنج شنبه 12 بهمن 1391, 11:07 صبح
پیشنهاد میکنم از چندین پنل استفاده کنید و آیتمهای هر فرم رو توی یک پنل بگذارید
بعد visible همه رو به جز اولی false کنید و هر وقت کاربر بر روی next کلیک کرد و یا preview پنل فعلی پنهان و پنل مورد نظر نمایش داده بشه
برای زمان بندی می تونی از تایمر استفاده کنی اما در مورد ویدئو اطلاعی ندارم
برای فشردن کلید در کیبورد هم میتونی keyPreview فرم را true کنی و در رویداد keydown کد مورد نظرت را بنویسی

prince0fpersia
پنج شنبه 12 بهمن 1391, 12:46 عصر
متاسفانه دستور close کل فرم هارو میبنده!! :ناراحت:

mp_mp353
پنج شنبه 12 بهمن 1391, 15:13 عصر
سلام دوست من این یه نمونه برنامه برات با usercontrol درست کردم اگه درست فهمیده باشم اینطور چیزی میخوای. بد نیست یه نگاهی بهش بنداری.
with Visual Studio 2010

mp_mp353
پنج شنبه 12 بهمن 1391, 15:17 عصر
البته از یک کامپوننت در dotnetbar 10 هم میتونی استفاده کنی. کامپوننتی به اسم pageSlider است که برای شما چند صحف ایجاد میکنه که به شکل اسلایدی صفحه میخوره.

prince0fpersia
پنج شنبه 12 بهمن 1391, 15:40 عصر
ممنون دوسا عزیز ... بله این برنامه که زحمت کشدید و قرار دادین دقیقا همون چیزی بود که میخواستم (هرچند الان به این نتیجه رسیدم که برنامه رو جور دیگه ای طراحی کنم)

اما خیلی دوست دارم این چیزی که درست کردید رو یاد بگیرم چطوری ساختید؟ میشه مراحل ساخت رو برای یک مبتندی مثل من توضیح بدید :خجالت: (البته من رشته ام سخت افزاره و بیشتر با C برنامه نویسی سیستم و کارای الکترونیکی انجام میدم )

prince0fpersia
پنج شنبه 12 بهمن 1391, 16:05 عصر
من یه عکس به این پست ضمیمه کردم که تصمیم گرفتم برنامه به این صورت باشه .
اول باید بگم که این قرار هست یک برنامه ای باشه که به بچه های پیش دبستانی اعداد 0 تا 10 و همچنین نحوه شمردن و + - * / و در نهایت کوچکتر و بزرگتر رو یاد بده . خیر سرم این ترم آخر میخواستم درس محیط چند رسانه ای رو به عنوان اختیاری بردارم نمره بالا بگیرم ، خودرم به این پروژه 6 نمره ای!!!!

تصمیم گرفتم محیط اصلی برنامه اینطوری باشه که سمت راست شماره هر درس روی هر کلید نوشته شده باشه و بعدش که کاربر روی هرکدوم کلیک میکنه ، فرم مربوط به اون درس باز بشه . فرم همه درس ها شبیه هم هست و شامل 4 تا picturebox میشه . همزمان که فرم نمایش داده میشه یک صدا پخش میشه که یک سوال میپرسه (مثلا عدد 3 کدوم شکل هست؟) .بعدش کاربر روی یکی از پیکچرباکس ها کلیک میکنه . اگر درست بود یه فرم جدید باید به صورت خودکار جایگزین بشه و یک سوال جدید بپرسه و اگر غلط بود یک آهنگ به نشانه غلط بودن پخش میشه و کاربر اینقدر باید انتخاب کنه تا روی پیکچر باکس اصلی که جواب درسته کلیک کنه.

پس ما چنتا فرم به عنوان درس بغل برنامه و در فرم اصلی داریم . اما خود این درس ها هرکدوم مقلا 5 تا 10 فرم داخلشون هست که الته این فرم ها به صورت خودکار و درصورتی که کاربر روی جواب درست کلیک کنه باید تعییر کنه .


اگر بتونم ظرف این یکی دو روزه این برنامه رو تموم کنم قول میدم آپدیتش کنم تا همگان ازش استفاده کنند:لبخندساده:

prince0fpersia
پنج شنبه 12 بهمن 1391, 16:26 عصر
ممنون دوسا عزیز ... بله این برنامه که زحمت کشدید و قرار دادین دقیقا همون چیزی بود که میخواستم (هرچند الان به این نتیجه رسیدم که برنامه رو جور دیگه ای طراحی کنم)

اما خیلی دوست دارم این چیزی که درست کردید رو یاد بگیرم چطوری ساختید؟ میشه مراحل ساخت رو برای یک مبتندی مثل من توضیح بدید :خجالت: (البته من رشته ام سخت افزاره و بیشتر با C برنامه نویسی سیستم و کارای الکترونیکی انجام میدم )


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

mp_mp353
پنج شنبه 12 بهمن 1391, 16:39 عصر
اگه مشکلی برای شما پیش آمد میتونید به وسیله ایمیل یاهو یا پیام خصوصی در انجمن بپرسید خوشحال میشم کمک کنم. هرچند به نظرم سختی زیادی نداره. سختیش همون درک کد ها بود که می بینم به خوبی درک کردید و تونستید حتی اونو توسعه بدید. :)

mp_mp353
پنج شنبه 12 بهمن 1391, 19:30 عصر
سلام دوست من این هم یک برنامه دیگه که از mdiparentform استفاده میکنه.
همون طور که خواستی موزیک هم پخش میکنه. به کمک کامپوننت windows media player خود
visual studio امیدوارم به دردت بخوره.

99347

99348

99349

برای اضافه کردن این کامپوننت هم این مسیر رو برو
toolbox -> choose toolbox items -> COM Components --> windows media player

prince0fpersia
پنج شنبه 12 بهمن 1391, 20:55 عصر
دوستان من برنامه ای که ضمیمه کردم به این پست رو با سیستم usercontrol سعی کردم پیاده سازی کنم اما به من eror میده و فکر میکنم به خاطر stack overflow باشه!
خودم فکر میکنم راه حلش استفاده از thread باشه اما من چون تعداد خیلی زیادی از این usercontrol ها میخوام بسازم ، و اگر قرار باشه برای هرکدوم یه thread تعریف کنم دیگه فرقی با برادران pat & mat فکر کنم نداشته باشم :گیج:

برای همین خواستم از شما بپرسم اولا مشکل چیه؟ دوما راه حل چیه؟ اصلا پیاده سازی چیزی که من میخوام با usercontrol درسته یا خیر؟

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

StartPage صفحه اول برنامه هست که موقع باز کردنش دیده میشه ، توی کادر بالا یه تیکه فیلم پخش میشه که نحوه استفاده از برنامه رو توضیح میده و بعدش کاربر با زدن دکمه شروع وارد برنامه میشه (البته دلم میخواست کادر فیلم به اندازه کل صفحه باشه و بعد نمایش فیلم دکمه شروع وسط صفحه ظاهر بشه که چون بلد نبودم بیخیال اینکار شدم !)
MainPage صفحه اصلی برنامه است که 6 تا درس رو نشون میده که کاربر هرکدوم رو انتخاب کنه صفحه باید تغییر کنه و وارد محیط درس بشه
course1-1 or course 1-2 اینها صفحات مربوط به درس 1 هستند . صفحات سایر دروس هم به همین صورت خواهند بود . با باز شدن هرکدوم از این صفحات گوینده همون سوال بالای عکس هارو میخونه و بعدش کاربر باید روی عکسی که جواب سوال هست کلیک کنه و اگر درست بود برنامه باید محتویات داخل فرم رو تغییر بده و سوال جدید رو نمایش بده و اگر غلط بود یک تیکه موزیک به نشانه غلط بودن جواب پخش میشه . خلاصه این کار ادامه پیدا میکنه تا آخزین سوال.
و ما 6 تا از این course ها داریم .

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

الان مشکل من اینه که وقتی داخل دکمه شروع در StartPage کدی مینویسم که با فشردنش این usercontrol بسته بشه و usercontrol مربوط به MainPage ظاهر بشه برنامه خطا میده .
همچنین قصد من اینه که کد اجرا شدن هر UC رو داخل رخداد کلیک هر کدوم از عکسها بنویسم تا اگر کاربر روی عکس درست کلیک کرد اون UC بسته بشه و UC بعدی باز شه (UC=usercontrol)

نمیدونم این راه درستی هست یا نه؟ اگر غلطه په کار کنم.

درضمن هنوز سیستم TDI رو که دوست خویم زحمت کشیدن و نمونه گذاشتند امتحان نکردم و فعلا با این یوزر کنترل ها داشتم سر و کله میزدم. نمیدونم کدوم راه پیاده سازی اصولی تر و درست تره؟

ممنون میشم دوستان کمک کنند

the king
پنج شنبه 12 بهمن 1391, 22:00 عصر
ReduceLoadingTime.zip (http://barnamenevis.org/attachment.php?attachmentid=98741&d=1358690866)

رجوع شود به :

سوال: افزایش سرعت لود شدن کنترل ها (http://barnamenevis.org/showthread.php?379900)

prince0fpersia
پنج شنبه 12 بهمن 1391, 22:29 عصر
سلام دوست من این هم یک برنامه دیگه که از mdiparentform استفاده میکنه.
همون طور که خواستی موزیک هم پخش میکنه. به کمک کامپوننت windows media player خود
visual studio امیدوارم به دردت بخوره.

99347

99348

99349

برای اضافه کردن این کامپوننت هم این مسیر رو برو
toolbox -> choose toolbox items -> COM Components --> windows media player


مهندس این تابع program کارش چی هستش؟
این f1,f2,f3,f4,fmdi رو کحا تعریف کردید؟

mp_mp353
پنج شنبه 12 بهمن 1391, 22:33 عصر
سلام دوست من تویه new کردن ها اشتباه کردی. سعی کن usercontrol ها رو داخل هم new نکنی و داخل فرم اصلی new کن.
اینم برنامه ی شما تغییر یافتش. فقط خوب به تغییرات دقت کن و بر اساس اونا ادامه بده اگه مشکلی داشتی خبر بده تا کمکت کنم.
با

mp_mp353
پنج شنبه 12 بهمن 1391, 22:35 عصر
مهندس این تابع program کارش چی هستش؟
این f1,f2,f3,f4,fmdi رو کحا تعریف کردید؟
دوست عزیز این کلاس اصلی یرنامه است که پیکربندی ابتدایی و تابع main اصلی برنامه داخل اون است.
fmdi,f1,... رو هم به شکل static داخل همون کلاس program برنامه تعریفشون کردم تا هرجا که خواستم به اونها دست رسی داشته باشم و بتونم عملیات روی فرم هام رو ساده تر انجامشون بدم.

prince0fpersia
پنج شنبه 12 بهمن 1391, 23:18 عصر
الان فکر میکنم 70-80 % فهمیدم چیکار باید بکنم اما دیگه چشمام نمیبینه ، کور شدم پای این کامپیوتر از صبح نشستم

بازم از شما تشکر ویژه دارم . انصافا این 2 برنامه رو قرار نمیدادید فکر نکنم میتونستم اینکارو انجام بدم . واقعا خیلی کمک کرد

فردا صبح دوباره سعی میکنم اینبار بدون اشکال برنامه رو بنویسم .

هنوز هم چنتا سوال دارم . 1- چطور یک picturebox رو کاری کنم که مقل کلید هم عمل کنه. یعنی کاربر وقتی روش کلیک میکنه مثل button ها یک عملی انجام بده ؟(میخوام وقتی کاربر روی عکس درست کلیک میکنه مثلا یک مویک صدای تشویق پخش شه یا همزمان بره به سوال یا همون فرم بعد)
2- اون مدیا پلیر با اینکه حالت visible = false هست اما بازم سیاهه پایین تصویر . چطور میشه برطرفش کرد؟

mp_mp353
پنج شنبه 12 بهمن 1391, 23:32 عصر
برای pictureBox که از event ها رخداد mouse_click اون رو انتخاب کن و داخل اون کد بنویس دقیقا مثل دکمه.
برای مدیا پلیر خودم هم نفهمیدم چی شد ;) فکر کنم برنامه قاط زده. خوب اگه مشکلی بود هم من هستم وهم اساتید ارجمند سایت . :)

khokhan
جمعه 13 بهمن 1391, 00:14 صبح
.................................................. .................................................. ..............

prince0fpersia
جمعه 13 بهمن 1391, 12:21 عصر
برای pictureBox که از event ها رخداد mouse_click اون رو انتخاب کن و داخل اون کد بنویس دقیقا مثل دکمه.
برای مدیا پلیر خودم هم نفهمیدم چی شد ;) فکر کنم برنامه قاط زده. خوب اگه مشکلی بود هم من هستم وهم اساتید ارجمند سایت . :)

سلام

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

Program.f2 = new Form2();
Program.f2.MdiParent = Program.fmdi;
Program.f2.Show();
this.Close();


اما به جای اینکه فقط فرم جاری رو ببنده و فرم بعدی رو باز کنه ، همه فرم هارو میبنده و برنامه بسته میشه! همین مشکل رو با ucsercontrol ها هم داشتم.
آیا باید گزینه ای رو در property ها تغییر بدم؟ چون از لحاظ کد فرقی بین برنامه خودم و اون که شما داده بودید نمیبینم!!

همچنین فرم جدید در یک مکان متفاوت از فرم قبلی باز میشه . چکار کنم دقیقا جای قبلی باز بشه؟

mp_mp353
جمعه 13 بهمن 1391, 12:33 عصر
startposition رو center screen بزار و سایز فرم ها رو هم یکی قرار بده.
برایمشکل اولی هم برنامه رو قرار بده تا بررسی کنم.

prince0fpersia
جمعه 13 بهمن 1391, 13:18 عصر
ممنون دوست عزیز ، اینقدر ور رفتم باهاش که هردو مشکل حل شد :لبخند:

prince0fpersia
جمعه 13 بهمن 1391, 13:39 عصر
دوستان راه دیگه ای نیست که بشه یک تراک صوتی رو در برنامه پخش کرد؟ به غیر از قرار دادن مدیا پلیر؟

prince0fpersia
جمعه 13 بهمن 1391, 15:19 عصر
من این کد رو داخل mouse_click EVENT پیکچرباکس مینویسم تا همزمان که کاربر روی عکس کلیک میکنه هم یک موسیقی تشویق پخش بشه و هم فرم جاری بسته و فرم یعدی باز بشه ، اما متاسفانه موقع اجرا خطا میده


privatevoid pictureBox3_MouseClick(object sender, MouseEventArgs e)
{
Program.f4 = newForm4();
Program.f4.MdiParent = Program.fmdi;
Program.f4.Show();
this.Close();
System.Media.SoundPlayer s = new System.Media.SoundPlayer("1");
s.Play();
}


چرا این اتفاق میفته؟ آیا دلیلش بسته شدن فرم جاری هست؟
خب پس راه حل چیه؟

prince0fpersia
جمعه 13 بهمن 1391, 15:29 عصر
حل شد...................

prince0fpersia
جمعه 13 بهمن 1391, 15:39 عصر
الان یک سوال دیگه دارم

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

(البته خودم با حلقه for میتونم یه تاخیری به وجود بیارم بین 2 تراک اما بنظرم اینکار غیر اصولی باشه و همچنین سربار سیستم و برنامه رو خیلی زیاد کنه؟ . من میخوام تا تراک 1 تموم شد تراک 2 شروع شه . نمیدونم این تموم شدن رو چطور میشه به برنامه فهموند؟)

mp_mp353
جمعه 13 بهمن 1391, 16:30 عصر
دوست عزیزز من با این کامپوننت زیاد کار نکردم اما به گمتنم یه playlist داشته باشه دوتا آهنگ رو داخل یه playlist قرار بده و بعد اجرا کن.

prince0fpersia
جمعه 13 بهمن 1391, 20:36 عصر
چرا وقتی event مربوط به کلیک موس یک picturebox فعال میشه دیگه داخلش عکس لود نمیشه !!!:عصبانی++:

prince0fpersia
جمعه 13 بهمن 1391, 21:10 عصر
حل شد ..........

prince0fpersia
شنبه 14 بهمن 1391, 00:57 صبح
یک سوال دارم

چطور میشه یک متغیر کلی مثل int i در کلاس اصلی برنامه (program) تعریف کرد که بشه توی همه فرم ها ازش استفاده کرد؟
من میخوام یک متغیر تعریف کنم که تعداد دفعاتی که کاربر اشتباه روی تصاویر کلیک میکنه رو بشماره و در آخر هر درس بهش نشون بده
نیاز به یک متغیر کلی دارم که بتونم در همه فرم های child ازش استفاده کنم . نمیدونم چطور و کجا تعریفش کنم؟

prince0fpersia
شنبه 14 بهمن 1391, 01:12 صبح
همچنین یک سوال دیگه

برای اینکه بخوام یک پیغام به کاربر نشون بدم چه چیزی باید توی فرمم بذارم؟ label گذاشتم فایده نداره

mp_mp353
شنبه 14 بهمن 1391, 02:33 صبح
میتونی متغیر i رو داخل کلاس program به شکل static تعریف کنی.

vahid2112
شنبه 14 بهمن 1391, 07:31 صبح
سلام
از چند panel استفاده کن
که بازدن هردکمه پنل موجود hide و پنل بعدی Show بشه
!!!!!

prince0fpersia
شنبه 14 بهمن 1391, 09:12 صبح
میتونی متغیر i رو داخل کلاس program به شکل static تعریف کنی.

من میخوام چنتا int تعریف کنم که توی همه فرم ها قابل دسترسی باشه و بشه به مقدارش اضافه یا کم کرد و درنهایت نمایشش داد.
داخل کلاس program به صورت public static int i تعریف کردم (پیش همون تعاریف f1,f2 ....) اما توی فرمها وقتی مینویسم i میگه تعریف نشده.
چطور باید تو فرمها بهش دسترسی داشته باشم؟

ممنون

wolf_majid
شنبه 14 بهمن 1391, 09:32 صبح
من میخوام چنتا int تعریف کنم که توی همه فرم ها قابل دسترسی باشه و بشه به مقدارش اضافه یا کم کرد و درنهایت نمایشش داد.
داخل کلاس program به صورت public static int i تعریف کردم (پیش همون تعاریف f1,f2 ....) اما توی فرمها وقتی مینویسم i میگه تعریف نشده.
چطور باید تو فرمها بهش دسترسی داشته باشم؟

ممنون
به صورت زیر :
Program.i

prince0fpersia
شنبه 14 بهمن 1391, 09:40 صبح
من میخوام هروقت کاربر روی عکس اشتباه کلیک میکنه یک عدد به i اضافه بشه که در نهایت بهش نشون بدم . این کد اینکارو میکنه؟ (قسمت اولش یه موزیکه که موثع کلیک پخش میشه)


privatevoid pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
System.Media.SoundPlayer ss = new System.Media.SoundPlayer("sounds\\2.wav");
ss.Play();
Program.i = new int();
Program.i++;
}

prince0fpersia
شنبه 14 بهمن 1391, 09:44 صبح
همچنین یک سوال دیگه

برای اینکه بخوام یک پیغام به کاربر نشون بدم چه چیزی باید توی فرمم بذارم؟ label گذاشتم فایده نداره

این رو هم اگر میشه جواب بدید . من یک فرم میخوام درست کنم که در نهایت نشون داده بشه و توش بزرگ بنویسه " کاربر محترم شما به تعداد i (همونی که پرسیدم چطور باید تعریف کنم) غلط داشتید . "

نمیدونم چی باید توی فرم بذارم که بتونم متن دلخواهم رو توی خود فرم نمایش بدم؟

Mahmoud.Afrad
شنبه 14 بهمن 1391, 11:43 صبح
من میخوام هروقت کاربر روی عکس اشتباه کلیک میکنه یک عدد به i اضافه بشه که در نهایت بهش نشون بدم . این کد اینکارو میکنه؟ ...

خط Program.i = new int(); رو پاک کن. در ثانی شما اشتباه بودن رو چجوری تشخیص میدی؟ توی این کد که چیزی برای تشخیص اشتباه بودن انتخاب نیست.

این رو هم اگر میشه جواب بدید . من یک فرم میخوام درست کنم که در نهایت نشون داده بشه و توش بزرگ بنویسه " کاربر محترم شما به تعداد i (همونی که پرسیدم چطور باید تعریف کنم) غلط داشتید . "

نمیدونم چی باید توی فرم بذارم که بتونم متن دلخواهم رو توی خود فرم نمایش بدم؟
از لیبل استفاده کنید و text لیبل رو مقداردهی کنید.

prince0fpersia
شنبه 14 بهمن 1391, 11:44 صبح
یک سوال دیگه ... چطور داخل label عدد فارسی بنویسم؟

Mahmoud.Afrad
شنبه 14 بهمن 1391, 11:48 صبح
یک سوال دیگه ... چطور داخل label عدد فارسی بنویسم؟
یک راه اینه که rightToLeft لیبل را true کنید.
راه دیگه هم اینه که فونت لیبل را از فونتهای فارسی انتخاب کنید.

mp_mp353
شنبه 14 بهمن 1391, 14:21 عصر
برای زیباتر شدن میتونی پیام پایان و نمایش تعداد خطا رو در یک فرم جدید نمایش بدی (مثلا f1 ) و اونو به شکل f1.ShowDialog() نمایش بدی. و پس زمینه اون رو یه تصویر بزاری و روی اون یه lable قرار بدی و متن مورد نظر و تعداد خطا رو داخل اون نمایش بدی. فونت رو هم فونت فارسی مثلا B Titr قرار بده. و راست چینش کن

prince0fpersia
شنبه 14 بهمن 1391, 23:27 عصر
در مورد فارسی کردن هیچکدوم از راه هایی مثل راست ین کردن یا استفاده از فونت فارسی حواب نمیده . من از این کد استفاده کردم و مشکل برطرف شد :



public string FarsiNumber(string str)
{
string s = "";
int i;
char[] ch = str.ToCharArray();
foreach (char c in ch)
{
if (char.IsDigit(c))
{
i = (int)char.GetNumericValue(c) + 1776;
s += ((char)i).ToString();
}
else
s += c.ToString();
}
return s;
}

این کلاس رو باید در برنامه قرار داد و بعدش با این دستور متنی که میخوایم داخل label قرار بگیره بنویسیم . خودش تبدیل میکنه اعداد رو . فقط باید label رو راست چین کرد تا به هم ریختگی هم به وحود نیاد .

label1.Text = FarsiNumber("");

این کد خیلی عالی بود و جواب داد.

prince0fpersia
شنبه 14 بهمن 1391, 23:31 عصر
بعد 3 روز سر و کله زدن و 65 تا فرم ساختن و حدود بیش از 150 تصویر و 70 تا فایل صوتی و یه فایل ویدیویی که فردا میخوام بسازم فکر کنم فردا ان شاء الله تموم بشه و کل پروژه رو میخوام آپلود کنم . تا الان 20 مگابایت شده که نهایتا 10 مگ هم بابت ویدیو اضافه بشه .

البته سعی میکنم بدون ویدیو رو هم قزار بدم هرکی خواست دانلود کنه ... بازم تشکر میکنم از همه دوستانی که وقت گذاشتند و راهنمایی کردند ، من جمله دوست عزیزم آقای mp_mp353

mp_mp353
شنبه 14 بهمن 1391, 23:38 عصر
اگه دوست داشتی با seven zip میتونی حجمش رو کمتر کنی ولی برای ویدیو ها خیلی کاربرد داره. آموزش استفادش توی نت هست. یه آموزش هک داشتم 80 مگ بعد اکسترکت می شد 10.5 گیگابایت! :)

prince0fpersia
شنبه 14 بهمن 1391, 23:52 عصر
خط Program.i = new int(); رو پاک کن. در ثانی شما اشتباه بودن رو چجوری تشخیص میدی؟ توی این کد که چیزی برای تشخیص اشتباه بودن انتخاب نیست.



من برنامه ام حدود 65 تا فرم داره و هر فرم 3 تا picturebox . از روی رخداد کلیک روی عکس میفهمم که کاربر روی عکس غلط کلیک کرده (کاربر باید روی یکی از عکسها کلیک کنه . اگر درست بود میره فرم بعد اما اگر غلط بود میخوام تعداد کیک های غلطش رو بشمارم و در آخرین فرم بهش نشون بدم)

من یه متغیر اینطوری توی کلاس program تعریف کردم :

public static int i

حالا میخوام توی رخداد کلیک هر پیکچرباکس(که جواب سوال نیست) بتونم تعداد i رو یکی اضافه کنم تا در نهایت بفهمم کاربر چند بار روی عکس های غلط کلیک کرده و بهش نشون بدم. پس من باید یک i داشته باشم که توی هرکدوم از فرمهای برنامه و توی هرکدوم از رخداد های کلیک موس بتونم بذارمش و به عنوان شمارنده ازش استفاده کنم. اما نمیدونم چطور همچین i سراسری تعریف کنم که توی همه فرم ها بشه استفاده کرد؟

همچنین نحوه استفاده توی فرم ها به چه صورت باید باشه؟

mp_mp353
شنبه 14 بهمن 1391, 23:59 عصر
داخل کلاس program به شکل سراسری i رو به صورت زیر تعریف کن
public static int i;
و هر جا خواستی از استفاده کنی بنویس:(مثلا)
Program.i=1;
یا هر چی خواستی.
فقط اول در رخداد load فرم اصلی حتما مقدارش رو صفر کن.
یا داخل همون کلاس program در داخل متد main بنویس:
Program.i=0;
تا مقدار دهی اولیه بشه

prince0fpersia
یک شنبه 15 بهمن 1391, 12:10 عصر
توی کنسول اگر بخوام همچین عبارتی رو چاپ کنم : کاربر محترم شما 2 عدد غلط داشتید

مینوشتم :

Console.WriteLine("karbare mohtaram shoma {0} adad ghalat dashtid " , Program.i);


اما توی حالت ویژوال نمیدونم چطور باین این متن رو داخل Label بنویسم؟ اصلا label باید استفاده کنم یا چیز دیگه؟

mp_mp353
یک شنبه 15 بهمن 1391, 13:02 عصر
دوست عزی این یه مثال کوچیک که متوجه بشی چطوری کاری که میخوای رو انجام بدی:

public void test()
{
string s = "one {0} two {1} three {2}";
string rev_s = "three {2} two {1} one {0}";
s = string.Format(s, 1, 2, 3);
rev_s = string.Format(rev_s, 1, 2, 3);
MessageBox.Show(s + "\n\n" + rev_s);
}

mp_mp353
یک شنبه 15 بهمن 1391, 15:29 عصر
شما میتونی بنویسی

string s = "karbare mohtaram shoma {0} adad ghalat dashtid "
lable1= string.Format(s,program.i);

prince0fpersia
یک شنبه 15 بهمن 1391, 16:20 عصر
میگم مهندس شما که هرسوالی پرسیدم جواب دادین ، نحوه قرار دادن ویدیو رو هم میگید؟ چه چیزی باید برای نمایش ویدیو در فرم قرار بدم؟ با چه کدی باید پخشش کنم؟

ممنون

prince0fpersia
یک شنبه 15 بهمن 1391, 16:28 عصر
در مورد شمارش خطا هم من متغیر اصلی رو به اینصورت در کلاس program تعریف کردم

public static int w1 ;


و این کد رو درون رخداد های عکس های غلط فرم های مختلف قرار میدم :

Program.w1++;


و در نهایت اینطوری در آخرین فرم چاپشون میکنم :


string s1= ("کاربر محترم شما تعداد {0} خطا داشتید");
label1.Text = string.Format(s1, Program.w1);
 


اما بی فایده است! معلوم نیست چی رو میشماره!

mp_mp353
یک شنبه 15 بهمن 1391, 16:43 عصر
دوست عزیز شما i رو مقدار دهی اولی کردی؟ اگه نه که در همون جایی که تعریف کردی بنویس public static int i=0;
اینم یه مثال برای همین شمارشی که خواستی شاید به دردت بخوره

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

prince0fpersia
یک شنبه 15 بهمن 1391, 17:36 عصر
خب من هم دقیقا همین کار رو میکنم اما من توی چند فرم از i استفاده میکنم. یعنی شما 10 تا فرم درست کنید و بعضی ها غلط و بعضی درست باشند و در نهایت روی فرم 11 بخواید نتایج کلیک های غلط رو نشون بدید . من با همون روش سعی میکنم این کارو کنم اما درست در نمیاد!

prince0fpersia
یک شنبه 15 بهمن 1391, 17:39 عصر
حالا یک مشکل خیلی حادتر و بدتر پیش اومده . من بالای اون فرم مادر MDIparent یک منو گذاشتم که چنتا گزینه داره که در اصل یکی از فرمهارو باز میکنه . اما مشکل اینجاست که فرم ها بسته نمیشن! یعنی از منوی بالا کاربر نمایش ویدیو راهنمارو کلیک میکنه و بعد فرم مربوط به ویدیو باز میشه اما اگر کاربر بخواد دوباره یه گزینه دیگه رو انتخاب کنه ، یک فرم جدید باز میشه اما اون فرم ویدیو اون زیر باز هست و صداش داره میاد !!

اگر this.close() هم بذارم کل فرم ها بسته میشه!

mp_mp353
یک شنبه 15 بهمن 1391, 17:40 عصر
خوب شما بعد از هر بار نمایش خطا ها برای سوال یا فرم بعدی دوباره مقدار شمارنده رو صفر کن تا برای سوال بعدی مقدار خطا های سوال قبلی رو در نظر نگیره در این حالت بعد از هر بار نمایش خطا ها شمارنده رو برای سوال بعد 0 کن.

mp_mp353
یک شنبه 15 بهمن 1391, 17:46 عصر
برای مشکل دومت سعی کن فرم ها رو در کلاس برنامه (program) یا درون فرم اصلی( درصورتی که فرم اصلی داخل program و به شکل سراسری و static تعریف شده باشد) تعریف کنی و برای بستن مثلا فرم f1 در داخل لود فرم جدید برای مثال f2بنویس program.f1.close() در این صورت بیشتر مشکلات حل میشه. حالا برای مثال اگه داخل فرم اصلی فرم f1 رو به شکل سراسری تعریف کردی اون وقت کافیه بنویسی program.fmdi.f1.close() البته همون طور که معلومه باید fmdi داخل program و static تعریف شده باشه. :)

prince0fpersia
یک شنبه 15 بهمن 1391, 18:35 عصر
مهندس اون کاری که شما میگید رو برای همه فرم ها انجام دادم و مشکلی نداره . اما واسه اون فرم اصلی که بقیه فرم ها داخلش قرار میگیرند (عین همون کاری که خودت توی اون برنامه که اولین بار گذاشتی کرده بودی و اسمش رو fmdi گذاشته بودی ) یک منو گذاشتم که این منو کار رو خراب کرده.

prince0fpersia
یک شنبه 15 بهمن 1391, 18:40 عصر
اگر بگید ویدیویی که با این دستور
axWindowsMediaPlayer1.URL = "video\\1.avi";

اجرا میشه ، با چه دستوری stop میشه ، فکر کنم بتونم مشکلو درست کنم

prince0fpersia
یک شنبه 15 بهمن 1391, 19:21 عصر
یک سوال دیگه

من از این پروژه چطور خروجی نهایی بگیرم که به صورت یک برنامه اجرایی دربیاد و کاربر بتونه استفاده کنه؟

:متفکر:

prince0fpersia
یک شنبه 15 بهمن 1391, 21:25 عصر
چطور فایل موزیک و یا ویدیو رو stop کنم . یکی کمک کنه خیلی فوریه

mp_mp353
یک شنبه 15 بهمن 1391, 22:30 عصر
برای stop فایل صوتی یا تصویری اگه از کامپوننت مدیا پلیر استفاده میکنی کد زیر رو براش بنویس:
axWindowsMediaPlayer1.Ctlcontrols.stop();
برای بستن فرم فرزند فعال یک فرم mdi میتونی کد زیر رو استفاده کنی:
fmdi.ActiveMdiChild.Close();
که fmdi همون فرم ام دی آی شما هست. فقط هواست باشه این دستور فرم فرزند فعال رو برای این ام دی آی فرم می بنده! میتونی قبل از نمایش هر فرم از منویی که قرار دادی با این دستور تمام فرم های باز رو ببندی.

mp_mp353
یک شنبه 15 بهمن 1391, 22:38 عصر
به کمک این حلقه هم میتونی تمام فرم های فرزندی که در یک mdiparent form باز هستند رو ببندی.
for (int i = 0; i < Program.fmdi.MdiChildren.Length; i++)
{
Program.fmdi.MdiChildren[i].Close();
i--;
}
که fmdi فرم ام دی آی من هست که در کلاس program تعریف شده.

prince0fpersia
دوشنبه 16 بهمن 1391, 01:51 صبح
با بک کلیک یک فرم باز میشه ...میخوام بعد چند قانیه خودش بسته بشه و یک فرم جدید باز بشه

این کد رو داخل قسمت load فرم نوشتم اما فایده ای نداره!!


for (int i = 0; i < 5000000; i++) ;
pictureBox1.Image = Image.FromFile("pictures\\padidavarandeh\\3.jpg");
 
Program.f64.ActiveMdiChild.Close();
Program.f65 = new Form65();
Program.f65.MdiParent = Program.fmdi;
Program.f65.Show();
this.Close();


البته این کد رو به انواع مختلفی نوشتم اما همچنان فقط فرم اول رو نشون میده و فرم عوض نمیشه

prince0fpersia
دوشنبه 16 بهمن 1391, 05:30 صبح
یک سوال دیگه

من از این پروژه چطور خروجی نهایی بگیرم که به صورت یک برنامه اجرایی دربیاد و کاربر بتونه استفاده کنه؟

:متفکر:


:متعجب: ؟

mp_mp353
دوشنبه 16 بهمن 1391, 09:28 صبح
for (int i = 0; i < 5000000; i++) ;
pictureBox1.Image = Image.FromFile("pictures\\padidavarandeh\\3.jpg");
 
Program.f64.ActiveMdiChild.Close();
Program.f65 = newForm65();
Program.f65.MdiParent = Program.fmdi;
Program.f65.Show();
this.Close();
1.این کد رو کجا (داخل لود کدوم فرم) مینویسید؟
2. برای چی برای ایجاد تاخیر از timer استفاده نمیکنید؟
3.فایل خروجی در آدرس: project_name\bin\debug بعد از هر بار اجرای برنامه و به شکل exe ایجاد میشه.

prince0fpersia
سه شنبه 17 بهمن 1391, 10:06 صبح
1- فکر کنم داخل لود فرمی نوشتم که با کلیک بر دکمه پدید آورنده در منو یک عکس نشون میده . بعدش میخواستم چند ثانیه بعد یک عکس دیگه نشون بده . که در نهایت نشد!
2- والا من قبلا پرسیدم چطور تاخیر استفاده کنم کسی جواب نداد ، از روش قدیمی که در C استفاده میکردم استفاده کردم.
3- بله من یک shortcut ازش گرفتم و گذاشتم تو صفحه اصلی و بقیه رو هم همه توی فولدر که بود با هم رایت کردم دیروز و دادم به استاد و خلاص!!!

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

بازم از راهنمایی هات ممنونم مهندس ... راهنمایی های شما نبود عمرا توی 4 روز نمیشد اون پروژه رو بست (برای کسی که اطلاعاتش از C# حیلی کم بود)
من قبلا با c# با emgu کار کرده بودم که همون کتابخونه پردازش تصویر opencv هست .و همچنین یک سری کد برای کنترل موتورهای ربات نوشته بودم . اطلاغاتم در همون حد بود و فقط با نحوه کدنویسیش آشنا بودم.

mp_mp353
سه شنبه 17 بهمن 1391, 17:02 عصر
انسالله موفق باشی دوست عزیز. خدا قوت

prince0fpersia
سه شنبه 17 بهمن 1391, 19:40 عصر
ممنون دوست عزیز
ان شاء الله که شما هم به همچنین