آموزش برنامه نویسی مهندس میثم حبیبی

آموزش ساده و کاربردی برنامه نویسی مهندس میثم حبیبی

خاصیت Doublebuffering

هنگامی که تصویری بر روی نمایشگر نشان داده شود کارت گرافیکی تصویری از آنچه قرار است نمایش داده شود را رسم کرده و سپس این تصویر را به مانیتور ارسال می نماید. تصویری که قرار است به نمایشگر فرستاده شود بافر نامیده می‌شود.
در کارت‌های گرافیکی قدیمی، تنها یک بافر وجود داشت این بافر به طور مداوم رسم شده و به نمایشگر فرستاده می‌شود.این روش چند مزیت دارد ولی معایب آن به مراتب بزرگتر هستند. مهمترین مشکل این روش چشمک زدن تصاویر هنگام به روز آوری آنها روی صفحه‌نمایش است.
امروزه امکان خواندن و نوشتن همزمان روی بافر، توسط تکنیک جدیدتری با نام بافر دو گانه یا ”Double buffering” فراهم شده است . ایده پشت این تکنیک این است که کامپیوتر تصویر را تنها روی یکی از دو بافر با نام بافر عقب یا back buffer ریخته و بافر دیگر (با نام بافر جلو یا front buffer) را به نمایشگر می فرستد. زمانیکه رسم بافر عقب تمام می‌شود، فرآیندی با نام تعویض بافر یا buffer swap انجام می‌شود.تعویض بافر، چیزی را جا به جا نمی‌کند، بلکه تنها نام دو بافر را با هم عوض می‌کند: بافر عقب به بافر جلو و بافر جلو به بافر عقب تبدیل خواهد شد.
بعد از تعویض بافر، بافر جلوی جدید که در واقع همان بافر عقب حاوی تصویر است، به نمایشگر فرستاده می‌شود و نرم‌افزار نیز می‌تواند روی بافر عقب جدید،‌ طراحی ‌کند. زمانیکه تعویض بافر جدید صورت بگیرد، آنچه که گفته شد مجددا اتفاق می‌افتد.
در این شکل از بافر دو گانه، تعویض بافر در هر زمانی ممکن است اتفاق بیفتد. مثلا وقتی کارت گرافیکی در حال ارسال اطلاعات به نمایشگر است، ممکن است تعویض بافر رخ دهد. در این صورت باقیمانده صفحه‌نمایش با تصویر بافرجلویی جدید پرخواهد شد.
اگر محتوای بافر جلویی جدید با بافر جلویی قبلی اختلاف زیادی داشته باشد،‌ همان مشکل گسستگی و پارگی تصویر شکل می‌گیرد. گسستگی تصویر معمولا در سرعت فریم‌های بالا و زمانیکه بازی دارای تحرک زیادی است رخ می‌دهد. به دلیل تحرک بالای بازی و حرکت سریع، فریم‌ها اختلاف زیادی با هم دارند و گسستگی حاصل نیز برای کاربر ناراحت کننده است.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:49
مهندس میثم حبیبی

خاصیت ControlBox

این خاصیت قادر است تا ابزار های نوار عنوان کنترل Form ها را مدیریت نماید و در صورت False بودن دکمه های و آیکن نوار عنوان را حدف می نماید.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:46
مهندس میثم حبیبی

خاصیت CausesValidation

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

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:41
مهندس میثم حبیبی

خاصبت ContextMenuStrip

برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:41
مهندس میثم حبیبی

خاصیت CancelButton

این خاصیت در صورتی فعال میشود که شما ابتدا دکمه ای از نوع Button را درون Form قرار دهید سپس هر کدی را که میخواهید را درون آن بنویسید به طور مثال

MsgBox("یا علی گفیم و عشق آغاز شد")

حال خاصیت CancelButton را برابر Button1 قرار دهید (این در صورتی است که خاصیت Name کنترل را تغییر ندهید ) هم اکنون اگر تمرکز سیستم روی کنترل دیگر بود با زدن کلید Escape فرامین درون Button1 اجراء می گردد. به طور مثال اکثر فرمهای ویندوز در هر نقطه از فرم با زدن دکمه Escape خارج می شود مانند Date and Time یا Sound در کنترل پنل.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:39
مهندس میثم حبیبی

خاصیت BackgroundImageLayout

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

Center: عکس در مرکز فرم باشد.

Stretch: عکس کشیده شده و تمامی Form را بپوشاند.

Tile: عکس در حالت کاشی کاری قرار می گیرد که مانند کاغذ دیواری روی Form را می پوشاند

نکته: برای این حالت باید از عکسهای مخصوص tile استفاده نمایید که میتوانید از اینترنت دانلود کنید.

Zoom: عکس در حالت اصلی بدون کشیدگی قرار می گیرد.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:37
مهندس میثم حبیبی

خاصیت BackgroundImage

با این خاصیت میتوان در پشت زمینه Form عکس قرار داد.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:35
مهندس میثم حبیبی

خاصیت BackColor

این خاصیت رنگ کنترل را مشخص می نماید .

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:34
مهندس میثم حبیبی

خاصیت AutoValidate

برخی از برنامه نویس ها به جای آنکه از کنترل ها برای طراحی فرم استفاده نمایند ، با کد نویسی این عمل را انجام میدهند این خاصیت مشخص می نماید که آیا کدهای این نوع کنترل ها فعال باشد یا خیر

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:32
مهندس میثم حبیبی

خاصیت AutoSizeMode

این خاصیت شامل دو حالت می باشد در صورتی که در حالت GrowOnly قرار گیرد فرم در حالت اجراء همان شکل طراحی را دارد و فقط از آخرین کنترل سمت راست پایین کوچکتر نمی شود. اما اگر حالت GrowAndShrink انتخاب شده باشد فرم در هنگام اجرا به صورت پیش فرض به اندازه آخرین کنترل پایین سمت راست در خواهد آمد.

این خاصیت فقط به جهت نمایش درست در صفحه استفاده شده و باعث دیده شدن بهتر کنترل های خارج از Form میباشد که زمانی این اتفاق رخ میدهد که تعداد کنترلها از Form بیشتر باشد.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:28
مهندس میثم حبیبی

خاصیت AutoSize

اگر این خاصیت درون فرمها فعال باشد فرم نمیتواند از کنترلهای درونیش کوچکتر شود اما میتواند بزرگتر باشد.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:24
مهندس میثم حبیبی

خاصیت AutoScrollMinSize

تعیین ابعاد نوار پیمایش در خاصیت AutoScrollMargin . این خاصیت حداقل اندازه اسکرول را مشخص می نماید.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 16:23
مهندس میثم حبیبی

خاصیت AutoScrollMargin

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

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 15:22
مهندس میثم حبیبی

خاصیت AutoScroll

این خاصیت اگر True باشد در زمانی که کنترل های درون Form جای نگیرند در اطرافش نوار پیمایش Scroll ظاهر می گردد .

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

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 15:21
مهندس میثم حبیبی

خاصیت AutoScaleMode

واحد اندازه گیری متون درون Form می باشد که به صورت یک پوسته بوده و تأثیر چندانی در طراحی ندارد.

سه شنبه بیست و یکم فروردین ۱۴۰۳ | 15:7
مهندس میثم حبیبی

خاصیت AllowDrop

این خاصیت زمانی که True باشد اجازه میدهد تا اشیاء خارجی را درون Form با عمل Drag وارد نمود مثل آنکه میخواهیم عکسی را درون Photoshop کشیده و رها نمایید یا صوت MP3 را با کشیدن روی یک پلیر اجراء نماییم.

نکته: ابتدا باید کدهای Drag & Drop را بسازیم که در ادامه آموزشها بیان خواهد گردید.

دوشنبه بیستم فروردین ۱۴۰۳ | 16:39
مهندس میثم حبیبی

خاصیت AccessibleRole

ارائه خصوصیت به کنترل ها که میتوان از میان نام های درون کنترل انتخاب نماییم.

دوشنبه بیستم فروردین ۱۴۰۳ | 16:35
مهندس میثم حبیبی

خاصیت AccessibleName

عنوان متن توضیحی که در خاصیت AccessibleDescription توضیح داده شده است

دوشنبه بیستم فروردین ۱۴۰۳ | 16:34
مهندس میثم حبیبی

خاصیت AccessibleDescription

در این خاصیت شما می توانید توضیحی برای کنترل های بصری بنویسید تا در صورت نیاز متوجه شوید که چه عملی را انجام می دهند.

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

دوشنبه بیستم فروردین ۱۴۰۳ | 16:30
مهندس میثم حبیبی

خاصیت AcceptButton

این خاصیت در صورتی فعال میشود که شما ابتدا دکمه ای از نوع Button را درون Form قرار دهید سپس هر کدی را که میخواهید را درون آن بنویسید به طور مثال

MsgBox("یا علی گفیم و عشق آغاز شد")

حال خاصیت AcceptButton را برابر Button1 قرار دهید (این در صورتی است که خاصیت Name کنترل را تغییر ندهید) هم اکنون اگر تمرکز سیستم روی کنترل دیگر بود با زدن کلید Enter فرامین درون Button1 اجراء می گردد. به طور مثال اکثر فرمهای ویندوز در هر نقطه از فرم با زدن Enter ذخیره سازی انجام شده و خارج می شود مانند بخش Date and Time یا Sound در کنترل پنل.

دوشنبه بیستم فروردین ۱۴۰۳ | 16:12
مهندس میثم حبیبی

خاصیت Name

نام کنترل می باشد که کلیه کد نویسی ها بر مبنای آن انجام می گیرد و در هنگام کد نویسی قادر به تغییر نیست .بهتر است نام گذاری کنترلها بر اساس روش مجارستانی انجام بگیرد که این عمل برای مبتدی ها توصیه نمی شود .

به طور مثال: دکمه ای برای ذخیره سازی اطلاعات دانش آموزان است به شکل زیر نام گذاری می نماییم

Btn_Save_New_Student

بیانگر دانش آموزان - به معنای اطلاعات جدید - نوع فرم ذخیره سازی است – نام اختصاری Button

Lst_View_ Debtor_Student

بیانگر دانش آموزان – فهرست نمایشی بدهکاران - نوع فرم نمایشی است – نام اختصاری Listbox

دوشنبه بیستم فروردین ۱۴۰۳ | 16:2
مهندس میثم حبیبی

VB.net بهتر است یا #C ؟

با سلام خدمت تمامی دوستان عزیز

من در این مقاله میخواهم تا با مقایسه فنی بین دو زبانVB.NET و C# مشخص کنم کدامیک بهتر و کارآمد تر است.

این دو زبان از نظر معنایی و مفهومی هیچ تفاوت عمده ای با یکدیگر ندارند . در برخی از مقالات اینترنتی که بسیار کپی هم شده نوشته شده که C# از زبان قدیم C ارث بری می کند و بهره برده، که این گفته کاملا غلط است . دو زبان C و C# شاید به ظاهر ادبیات کد شبیه باشند اما در پایه برنامه نویسی مانند مغرب و مشرق هستند و اصلا هیچ ربطی به یکدیگر ندارند لذا این جمله باید به اینگونه اصلاح شوده که زبانهای VB.NET و C# هر دو با بهره گیری از Framework کار میکنند که زبانهای گذشته به هیچ عنوان این مورد را ندارند . دوم گفته شده که C# قادر است در حافظه دستکاری نماید که این عمل با VB.NET نیز انجام میشده .

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

دو زبان VB.NET و C# تنها یک پوسته برای زبان واسطی به نام MSIL(Microsoft Intermediate Language) بوده و باید تمامی کدها قبل از تبدیل شدن به زبان ماشین (Native Code) به آن تبدیل شوند. هنگام کامپایل شدن سورس کد برنامه ای که با یک زبان.NET نوشته شده است تولید می شود. زبانهای پلاترم دات نت به طور یکسان از این زبان میانی پشتیبانی میکنند. در واقع این زبانها مجبورند که از استاندارد MSIL تبعیت کنند نه اینکه هر مقداری از آن که دلشان بخواهد را پشتیبانی کنند. بنابراین وقتی قرار باشد نتیجه کار هر دو زبان VB.NET و C# نهایتا به کد MSIL تبدیل شود ، دیگر چندان مهم نیست که مبدأ این کد به چه زبانی نوشته شده است. بنابراین هر دو زبان به یک ترتیب از قابلیتهای کلیدی چارچوب دات نت پشتیبانی می کنند.

مدیریت حافظه در VB.NET دقیقا به همان ترتیبی اتفاق می‌افتد که در C# انجام می شود. در گذشته چنین نبود و یکی از دلایل گزینش زبان C به جای ویژال بیسیک ، برتری محسوس C نسبت به ویژوال بیسیک در زمینه مدیریت حافظه و راندمان برنامه بود. این تفاوت دیگر از بین رفته است. مدیریت حافظه مستقیما توسط چارچوب .NET انجام می‌شود و نوع زبان برنامه‌نویسی تاثیری ندارد. حتی برتری ویژوال بیسیک در زمینه Rapid Application Development و معماری Windows forms نیز در پلاتفرم .NET از بین رفته است. برنامه سازی در سی شارپ دقیقا به همان سادگی ویژوال بیسیک دات‌نت است. اما باید گفت شاید بهینه سازی و مدیریت حافظه در C بهتر از VB بوده ولی زمانی این میزان محسوس بوده که سیستمها کند بودند لذا امروزه که سخت افزارها چینین قوی شده است این اختلاف به هیچ عنوان حس نمی گردد.

تفاوت‌های اصلی میان دو زبان بیشتر در گرامر و Syntax زبان‌ است. در مقاله مفصلی که از اینجا قابل دریافت است ، مایکروسافت تمام کلیدواژه‌ها و syntax دو زبان را نظیر به نظیر بررسی کرده است و شما پس از مطالعه دقیقا مقاله فوق متوجه خواهید شد که این دو زبان تفاوت اندکی از نظر قابلیت ها و مزیتها دارند و هیچ کدام از نظر راندمان برنامه تولید شده و مدیریت حافظه به دیگری رجحان ندارند. تنها چیزی که می توانم بگویم اینست که زبان C# زبان خلاصه‌تری است. به عبارت دیگر برای پیاده سازی یک قطعه کد در زبان سی شارپ به حجم برنامه‌نویسی کمتری نیاز است. اما به دلیل اینکه بیشتر ادبیات به صورت علائم می باشد و مانند VB.NET محاوره ای نیست آزار دهنده تربوده حتی اگر به آن عادت کرده باشید. البته باید بگویم آنهایی که بر روی زبان C# تعصب دارند به هیچ عنوان این حرف را نمی پذیرند پس بهتر است هر دو کد را به یک تازه کار نشان داده تا او قضاوت نماید. سالهاست که هر دو زبان را تدریس میکنم و رفتارهای مختلف شاگردان تازه کار را مشاهده نموده ام .

در برخی از نسخه های قدیمی .NET اختلافاتی وجود داشت مانند . در زبان C# می‌توانستید سندهایی از نوع XML ایجاد کنید که با سورس کد برنامه شما پیوند خورده باشد. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی می‌توانید خیلی راحتDocumentation آن را نیز آماده نمود. چنین قابلیتی در VB.NET وجود نداشت که از نسخه 2005 به آن اضافه گردید.

بنابراین دقت کنید که برتر بودن زبان سی شارپ نسبت به VB.NET چیزی جز یک شایعه و افسانه نیست. حال باید گفت اگر سی شارپ و VB.NET از نظر قدرت و توانایی با هم تفاوتی ندارند پس مایکروسافت چرا این دوزبان را درست کرد؟ دلیلش اینست که مایکروسافت نمی توانست برنامه نویسان هریک از این دو گروه را وادار به پذیرش syntax زبان دیگر کند. بهتر بود که آنهایی که بهsyntax زبان C عادت دارند با همان روش ادامه بدهند و آنهایی که به ویژوال بیسیک علاقه دارند به همان منوال ادامه دهند. البته کار کسانی که از VB6 به VB.NET می آیند خیلی مشکل است زیرا VB.NET یک زبان OOP پیشرفته است و این موضوع کار برنامه نویسان ویژوال بیسیک را که به راحت طلبی عادت کرده بودند سخت می کند. ولی برنامه نویسان C کار چندان مشکلی ندارند و می توانند از دانش خود در زمینه برنامه نویسی شیء گرا کماکان بهره بگیرند.

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

  • در زبان VB.NET بخشی با نام Module وجود دارد که در C# وجود ندارد.

  • در زبان VB.NET دسترسی به بخش رویدادها بسیار ساده تر شده است.
  • در زبان VB.NET ادبیات کد راحتتر بوده که خودش باعث میگردد تا برنامه نویس تمرکز بیشتری را روی الگریتم برنامه اش داشته باشد نه آنکه مراقب حروف کوچک و بزرگ ، ; و .. باشد که باعث پایین آمدن راندمان برنامه میشود .
  • خطا یابی در VB.NET سریعتر از C# که باعث میگردد زودتر خطاها کشف شود شما پس از اصلاح کد در C# میبینید خط خطا زیرش دیرتر از VB.NET حذف میشود.
  • تفاوتهای عمده دیگری وجود دارد که کفیست به زبان انگلیسی در سایت ماکروسافت بخش MSDN جستجو نمایید.

صادقانه بگویم که زبان سی شارپ در اصل برای رقابت با جاوا خلق شده است و مزیت خاص دیگری نسبت به VB.NET ندارند. در واقع چون ادبیاتC# خیلی شبیه جاوا و C است، این ویژگی می تواند برخی از برنامه نویسان جاوا را قانع کند . واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.

امید وارم از این مقاله استفاده لازم را ببرید

دوشنبه بیستم فروردین ۱۴۰۳ | 15:45
مهندس میثم حبیبی
مطالب جدید تر
  • صفحه اصلی
  • آرشیو وبلاگ
  • عناوین نوشته ها
موضوعات وب
  • خواص کنترل ها
  • رویدادهای کنترل ها
  • مقالات
پیوندها
  • فهرست همه خواص کنترل ها #C و VB.Net
  • خواص فرم -Form
پیوندهای روزانه
  • آموزش ساخت سایت خبری با ASP.Net
  • آموزش برنامه نویسی سه لایه در VB.Net ویژوال بیسیک دانت نت
  • آموزش پیاده سازی سیستم انبارداری و فروش با ویژوال بیسیک دات نت VB.NET – تکمیلی
  • آموزش پیاده سازی سیستم انبارداری و فروش با ویژوال بیسیک دات نت VB.NET – مقدماتی
  • آموزش پروژه محور سی شارپ C#‎ – پیاده سازی سیستم رستوران آنلاین
  • آموزش ساخت سایت فروشگاه با ASP.NET
  • آموزش ویژوال بیسیک دات نت– تکمیلی
  • آموزش ویژوال بیسیک دات نت – مقدماتی
  • آرشیو پیوندهای روزانه
آرشیو وب
  • خرداد ۱۴۰۳
  • اردیبهشت ۱۴۰۳
  • فروردین ۱۴۰۳

B L O G F A . C O M

تمامی حقوق برای آموزش برنامه نویسی مهندس میثم حبیبی محفوظ است .