دوره مجازی #C (جلسه 29): آشنایی بیشتر با کنترل ها جهت طراحی GUI قسمت دوم

- visibility ١٨ mode_comment

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

مطالب آموزش داده شده در این جلسه به قرار زیر می باشند:

  • آشنایی با کنترل Picturebox به همراه Property ها و Event های آن
  • نحوه ی کار کردن با عکس ها و تصاویر در سی شارپ
  • نحوه ی خواندن عکس ها در حالت اجرا
  • قرار دادن تصاویر به عنوان Icon برای سایر کنترل ها
  • معرفی کنترل Timer به همراه Property ها و Event های آن
  • نوشتن یک بازی ساده ی توپ گردان در صفحه
  • نحوه ی جابجا شدن و Navigation بین فرم ها
  • انجام مینی پروژه ی دفترچه تلفن نسخه ی اول به طور کامل
  • معرفی نحوه ی ذخیره کردن تصاویر و فایل ها در پایگاه داده

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

info توجه

این مطلب یک جلسه از دوره آموزش #C می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش #C

comment دیدگاه کاربران
pardis karimi

سلام خسته نباشید. استاد من یع لایه درست کردم و توش contex ام رو قرار دادم و class personDAL رو همینطور که شما نوشتین، نوشتم ولی property های کلاسم رو نمیشناسه. چون contex ام تو این لایه است دیگه کلاس person رو توش اضافه نکرده بودم. ممکنه مشکل همین باشه؟

آرین زارعی

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

پژمان

با اجازه آقای زارعی دقیقا همین مشکل برای من بوجود اومد که ناچار شدم name space DAL رو دوباره بسازم. باید قبل از ساخت مدل دیتا بیس در این لایه کلاسهای همنام با تیبلهای موجود در دیتابیس ساخت و سپس مدل رو ایجاد کرد که به محض اینکار، مدل ما کلاسهای هم نام با تیبلهای دیتابیس رو اتوماتیک وار برداشته و با پروپرتیهای تیبل نظیر پر میکنه. ولی بعد از این دیگه از کلاسهایی که دستی و همنام با تیبلها ایجاد کرده بودیم در ظاهر لایه خبری نیست و همگی با پروپرتیهای مشابه تیبلهای موجود در دیتابیس به درون مدل منتقل میشوند. در این لحظه میتوان وارد مراحل بعدی کار بشیم یعنی ایجاد کلاس مثلا PersonDAL برای فراخوانی آبجکت context و ارتباط با مدل و تیبلها برای عملیات CRUD و ساخت لایه BO ولی نکته ای که هست برای انتخاب نام لایه های BO و کلاس موجود در لایه DAL اگر تعداد تیبلها بیشتر از یکی باشه فکر کنم میشه از نام دیتابیس استفاده کرد. مطمئن نیستم.
جناب زارعی در توضیح معماری چند لایه به روش سنتی و نیز استفاده از EF فقط یک تیبل استفاده کردن ایکاش حداقل در استفاده از مدل به روش جند لایه بیش از یک تیبل و مرتبط با هم رو مدل میکردند تا نحوه نمایش تیبلها و ارتباطشون رو درون لایه ها بهتر درک میکردیم ولی خود این هم میتونه تمرین خوبی باشه.

آرین زارعی

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

پژمان

خواهش میکنم

پژمان

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

آرین زارعی

سلام دوست عزیز. متاسفانه ایمیلتون به دست من نرسیده . لطفا آدرس رو مجددا بررسی کنید.

پژمان

ممنون. گویا قسمت بوده. خوشبختانه حل شد. در صورت لزوم مجددا مزاحم میشم.

پژمان

سلام جناب زارعی. من بعد از پایان این جلسه و از دو هفته پیش شروع به خوندن دوره آموزشی طراحی فروشگاه اینترنتی تحت Asp.net کرده ام (که ایکاش دوره شما رو تمام میکردم خوب که با بحث طراحی دیتابیس و لایه ها و کنترلرها تحت ویندوز فرم آب بندی میشدم میرفتم واسه اون آموزش. البته تصمیم داشتم به محض پایان دوره MVC بر گردم و دوره شما رو هم تموم کنم چون حیفه این همه تو این چند ماه زحمت کشیده بودم واسش تا اینجا و شما هم به نسبت دوره های مشابه در سایتهای دیگه واقعا از صفر سنگ تموم گذاشتی ) خلاصه همه چیز خوب داشت پیش میرفت که مدرس(امید زینلی- مدرس سایت آی آر پروگرام) گریزی زد به silverlight. از اونجایی که silverlight به نوعی زیر مجموعه wpf هستش البته برای طراحی صفحات وب، و همونطور که قطعا اشراف دارید چون از زبان xaml برای طراحی صفحات استفاده میکنه و همگی در محیط ویژوال استودیو هستند و همچنین به علت شباهت استفاده از کنترلرها عرض میکنم زیر مجموعه wpf. به هر طریق… کمی با مبحث ویندوز فرمها و چگونگی پیاده سازی هر دو از باب تشابه و تفاوتهای کد زنی دچار ابهام شدم. البته یه جورایی جمعش کردم ولی میگم ایکاش دوره شما و استفاده از کنترلرهای پیشرفته رو تمام میکردم.مثلا اینجا هنوز به بحث گرید ویو و لیست ویو نرسیدیم که اونجا کنترلرهای خیلی پیشرفته رو کار کردم. (واقعا گرید ویو و لیست ویو در کنار linq datasource و sql datasource چقدر در نمایش و بایند کردن اطلاعات از دیتابیس کاربرد دارن!!) باری.. ببخشید طولانی شد … قصد دارم بعد از پایان اون دوره و mvcدوباره دوره شما رو ادامه و تکمیل کنم چون اگر این دوره رو مطالعه نکرده بودم با نحوه تدریس و کلی گویی وحشتناک آقای زینلی به هییییییییچ جا نمیرسیدم. در انتها خواهشی که از شما دارم اینه که اگر مقدور هست یه دوره کوچیک ولو آپدیت برای این دوره برای کار با wpf و آشنایی با زبان xaml بذارید چون واقعا خیلی قویتر و شیرینتر از محیط خشک ویندوز فرمه و به خاطر استفاده همزمان از محیط design و source (تگهای زبان xaml)و مدیریت با code behind view انعطاف بسیار بالایی برای کار با دیتابیس داره. من که هزینش هر چه باشه پرداخت میکنم. در رابطه با دوره وب که پیشنهاد بنده رو رد کردید ولی این یکی واقعا مکمل خوبی برای طراحی Presentation layer دوره جاری میتونه باشه. بخصوص بعد از گذشت تقریبا سه سال از پایان دوره جاری.فقط اگر جوابتون مثبت هست تورو خدا سریع دست به کار بشید که زمان سریع میگذره و عمر کوتاهه. ممنون

آرین زارعی

حتما پیشنهادتون رو در نظر میگیرم دوست عزیز.
ممنون
موفق باشید.

Rasoul72

سلام
خسته نباشید استاد
من یه سوال دارم در مورد ایجاد فایل ستاپ برای همین مینی پروژه دفترچه تلفن
من با هرچه مثلا InstallShield یا Advanced Installer و… ستاپ میسازم فقط رو سیستم خودم کار میکنه فایل ستاپو جایه دیگه نصب کنی جواب نمیده . مشکل از نبودن دیتابیسه چون دیتا بیسو تو سیستم خودم دیتچ میکنم خطا میده برنامه.
حالا میشه راهنمایی کنید برای برای پروژه های دارای دیتابس وقتی میخوایم ستاپ بسازیم چیکار باید کرد.به غیر از اینکه sql تو سیستم هدف نصب کنیم.

آرین زارعی

سلام دوست عزیز.
جلوتر در جلسات پایانی پروژه نکته هایی رو برای ساخت ستاپ بهش اشاره میکنیم ولی برای اینکه جوابتون رو بدم یه راهی رو نسبتا دردسرش کمتره بهتون معرفی میکنم.
اولا شما باید Sql server engin رو نصب کنید که میتونید در حین ساخت ستاپ به عنوان یه dependency معرفیش کنید تا نصب بشه. دوما اینکه میتونید داخل نرم افزارتون یک کد در آغاز برنامه بنویسید تا چک کنه ببینه دیتابیس وجود داره یا نه. اگه نداره به کمک یک فایل که script دیتابیس شماست و در هنگام نصب در مسیر اصلی نصب کپی شده توسط ستاپ، دیتا بیس رو جنریت کنید با اجرای اون اسکریپت.
موفق باشید.

Rasoul72

ممنون از پاسختون
فقط یه چنتا سوال کوچیک.
ادرسی که باید بگم فایل از اونجا کپی بشه “که داخل پوشه نصب هست” به چه صورته
بعد منظورتون از قسمته اخر یعنی: فایل دیتابسو کپی کنم تو ادرس پیش فرض انجین؟
ادرس انجین هم به این صورت هست
C:\Users\”username”\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB

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

آرین زارعی

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

Rasoul72

میبخشید که همش مزاحم میشم
من زیاد با رابط کاربریی که installshield میده علاقه ندارم ولی Advanced Installer را بیشتر قبول دارم امکانات خوبی داره.من تا اینجاشو میتونم انجام بدم که : Sql server engin همراه با برنامه نصب بشه و فایل دیتابیس* هم در کنار فایل اجرایی برنامه قرار بگیره. تا اینجا درست.
حالا مشکل من اینجاس که این دیتابیس من چطور اتچ بشه تو انجین مشکل من همینه.
* اونوی که قراره تو محل نصب برنامه باشه خود فایل دیتابیس هست یعنی db.mdf یا اسکریپتی هست که تو اس کیوال سرور میگیریم اگه اسکریپته مشکل ایجاد نمیکنه چون وی یو ها و پروسیجرهارو نداره؟

آرین زارعی

ببینید الان متوجه منظورتون شدم.
شما اول اجرای برنامتون بررسی کنید که آیا یک دیتابیس با نام X در داخل انجین وجود دارد یا نه. اگه وجود داشت که روند معمولی رو برنامتون باید طی کنه. اگر وجود نداشت یعنی برای بار اولی هست که برنامه داره باز میشه و باید در اولین گام دیتابیس به یه طریقی بالا بیاد و یا اتچ بشه . در این مرحله هست که شما اگه script رو در sql ران کنید از طریق خود برنامتون (sqlcommand , sqlconnection) دیتابیس ساخته میشه. حتی میتونید اتچ هم کنید فایل دیتابیس رو . هر کدوم که راحتتر هستید.
موفق باشید.

Rasoul72

یه دنیا ممنون بابت پاسخگوییتون
فقط این قسمت
“” از طریق خود برنامتون (sqlcommand , sqlconnection) دیتابیس ساخته میشه. حتی میتونید اتچ هم کنید فایل دیتابیس رو . هر کدوم که راحتتر هستید.””
میشه راهنمایی کنید به چه صورت هست کدش چطور اتچ کنم یا اگه جایی هست من مطالعه کنم.
یه چیزی sqlconnection مگه برای اتصال به یه دیتابیس نیست.به کدوم دیتابسی وصل بشم بعد اگه وصل بشی چرا دیگه از sqlcommand استفاده کنیم مگه برای اجرای یه کوئری نیست.

آرین زارعی

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.