این خاصیت در صورتی که True باشد یک علامت سئوال در کنار دکمه Close قرار میدهد به شرط آنکه دو خاصیت MinimizeBox و MaximizeBox برابر با False باشد. این ابزار قادر است یا یک Help ساده برای شما قرار دهد که آموزش آن را در آینده خواهیم گذاشت.
این خاصیت در صورتی که True باشد یک علامت سئوال در کنار دکمه Close قرار میدهد به شرط آنکه دو خاصیت MinimizeBox و MaximizeBox برابر با False باشد. این ابزار قادر است یا یک Help ساده برای شما قرار دهد که آموزش آن را در آینده خواهیم گذاشت.
این خاصیت مدیریت خطوط دور Form را بر عهده دارد به طوری که اگر گزینه None را انتخاب نمایید قاب دور Form از بین خواهد رفتن و اگر گزینه های Fixed انتخاب گردد در هنگام اجرا دیگر Form قابل تغییر انداره نیست.
این خاصیت برای مشخص نمودن رنگ دست خط و قلم استفاده می شود.
ForeColor در کنترلهای درون Form
این خاصیت رنگ متون درون کنترل ها را مشخص می نماید .
نکته: شاید برای شما این مسئله باشد که چرا Microsoft از کلمه FontColor استفاده ننموده است .دلیل آن هم رزرو بودن این کلمه در نقطه ای دیگر می باشد و در آزمون های تستی عمده آزمون دهنده ها در صورت ندانستن گزینه اشتباه را انتخاب خواهند نمود زیرا به ترجمه این فرمان دقت می نمایند.
این خاصیت در حالت عادی کاربردی ندارد اما باید بدانید که اگر تغییری در این خاصیت انجام پذیرد کلیه کنترل های درونی آن نیز دستخوش تغییر قرار می گیرند. البته این توضیح برای تغییر این کنترل در فرم یا کارهای گروهی میباشد.
این خاصیت مشخص می نماید که آیا کنترل مورد نظر فعال باشد یا خیر که باعث می گردد کنترل بهتری روی روند برنامه داشته باشیم.این خاصیت مشخص می نماید که آیا کنترل مورد نظر فعال باشد یا خیر که باعث میگردد کنترل بهتری روی روند برنامه داشته باشیم.این خاصیت مشخص می نماید که آیا کنترل مورد نظر فعال باشد یا خیر که باعث میگردد کنترل بهتری روی روند برنامه داشته باشیم.
هنگامی که تصویری بر روی نمایشگر نشان داده شود کارت گرافیکی تصویری از آنچه قرار است نمایش داده شود را رسم کرده و سپس این تصویر را به مانیتور ارسال می نماید. تصویری که قرار است به نمایشگر فرستاده شود بافر نامیده میشود.
در کارتهای گرافیکی قدیمی، تنها یک بافر وجود داشت این بافر به طور مداوم رسم شده و به نمایشگر فرستاده میشود.این روش چند مزیت دارد ولی معایب آن به مراتب بزرگتر هستند. مهمترین مشکل این روش چشمک زدن تصاویر هنگام به روز آوری آنها روی صفحهنمایش است.
امروزه امکان خواندن و نوشتن همزمان روی بافر، توسط تکنیک جدیدتری با نام بافر دو گانه یا ”Double buffering” فراهم شده است . ایده پشت این تکنیک این است که کامپیوتر تصویر را تنها روی یکی از دو بافر با نام بافر عقب یا back buffer ریخته و بافر دیگر (با نام بافر جلو یا front buffer) را به نمایشگر می فرستد. زمانیکه رسم بافر عقب تمام میشود، فرآیندی با نام تعویض بافر یا buffer swap انجام میشود.تعویض بافر، چیزی را جا به جا نمیکند، بلکه تنها نام دو بافر را با هم عوض میکند: بافر عقب به بافر جلو و بافر جلو به بافر عقب تبدیل خواهد شد.
بعد از تعویض بافر، بافر جلوی جدید که در واقع همان بافر عقب حاوی تصویر است، به نمایشگر فرستاده میشود و نرمافزار نیز میتواند روی بافر عقب جدید، طراحی کند. زمانیکه تعویض بافر جدید صورت بگیرد، آنچه که گفته شد مجددا اتفاق میافتد.
در این شکل از بافر دو گانه، تعویض بافر در هر زمانی ممکن است اتفاق بیفتد. مثلا وقتی کارت گرافیکی در حال ارسال اطلاعات به نمایشگر است، ممکن است تعویض بافر رخ دهد. در این صورت باقیمانده صفحهنمایش با تصویر بافرجلویی جدید پرخواهد شد.
اگر محتوای بافر جلویی جدید با بافر جلویی قبلی اختلاف زیادی داشته باشد، همان مشکل گسستگی و پارگی تصویر شکل میگیرد. گسستگی تصویر معمولا در سرعت فریمهای بالا و زمانیکه بازی دارای تحرک زیادی است رخ میدهد. به دلیل تحرک بالای بازی و حرکت سریع، فریمها اختلاف زیادی با هم دارند و گسستگی حاصل نیز برای کاربر ناراحت کننده است.
این خاصیت قادر است تا ابزار های نوار عنوان کنترل Form ها را مدیریت نماید و در صورت False بودن دکمه های و آیکن نوار عنوان را حدف می نماید.
این خاصیت مشخص می نماید که آیا با ارسال فرم به سمت سرور به سبب اعتبار سنجی انجام گیرد یا خیر می توانید برخی از کنترل هایی را که نیاز به اعتبار سنجی ندارد را غیر فعال نمایید.
برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.برای استفاده از این خاصیت ابتدا باید حداقل یک ابزار ContextMenuStrip به برنامه اضافه نمایید و بر روی آن کدهای لازم را قرار داده و برنامه نویسی نمایید. حال خاصیت ContextMenuStrip هر کنترلی را که بر روی ابزار اضافه شده قرار دهید در هنگام کلیک راست روی آن کنترل منوی مورد نظر ظاهر گردیده و اجرای دستور می کند.
این خاصیت در صورتی فعال میشود که شما ابتدا دکمه ای از نوع Button را درون Form قرار دهید سپس هر کدی را که میخواهید را درون آن بنویسید به طور مثال
MsgBox("یا علی گفیم و عشق آغاز شد")
حال خاصیت CancelButton را برابر Button1 قرار دهید (این در صورتی است که خاصیت Name کنترل را تغییر ندهید ) هم اکنون اگر تمرکز سیستم روی کنترل دیگر بود با زدن کلید Escape فرامین درون Button1 اجراء می گردد. به طور مثال اکثر فرمهای ویندوز در هر نقطه از فرم با زدن دکمه Escape خارج می شود مانند Date and Time یا Sound در کنترل پنل.
در صورتی که خاصیت BackgroundImage دارای عکس باشد شما میتوانید از این خاصیت برای نوع حال نمایش استفاده می شود.
Center: عکس در مرکز فرم باشد.
Stretch: عکس کشیده شده و تمامی Form را بپوشاند.
Tile: عکس در حالت کاشی کاری قرار می گیرد که مانند کاغذ دیواری روی Form را می پوشاند
نکته: برای این حالت باید از عکسهای مخصوص tile استفاده نمایید که میتوانید از اینترنت دانلود کنید.
Zoom: عکس در حالت اصلی بدون کشیدگی قرار می گیرد.
با این خاصیت میتوان در پشت زمینه Form عکس قرار داد.
برخی از برنامه نویس ها به جای آنکه از کنترل ها برای طراحی فرم استفاده نمایند ، با کد نویسی این عمل را انجام میدهند این خاصیت مشخص می نماید که آیا کدهای این نوع کنترل ها فعال باشد یا خیر
این خاصیت شامل دو حالت می باشد در صورتی که در حالت GrowOnly قرار گیرد فرم در حالت اجراء همان شکل طراحی را دارد و فقط از آخرین کنترل سمت راست پایین کوچکتر نمی شود. اما اگر حالت GrowAndShrink انتخاب شده باشد فرم در هنگام اجرا به صورت پیش فرض به اندازه آخرین کنترل پایین سمت راست در خواهد آمد.
این خاصیت فقط به جهت نمایش درست در صفحه استفاده شده و باعث دیده شدن بهتر کنترل های خارج از Form میباشد که زمانی این اتفاق رخ میدهد که تعداد کنترلها از Form بیشتر باشد.
اگر این خاصیت درون فرمها فعال باشد فرم نمیتواند از کنترلهای درونیش کوچکتر شود اما میتواند بزرگتر باشد.
تعیین ابعاد نوار پیمایش در خاصیت AutoScrollMargin . این خاصیت حداقل اندازه اسکرول را مشخص می نماید.
اگر خاصیت AutoScroll فعال باشد و کنترلی خارج از دید باشد نوارهای پیمایش تنها تا لبه آخرین کنترل مخفی کشیده میشوند حال با این خاصیت میتوان گفت تا نوارها تا چه مقدار بعد از آخرین کنترل کشیده شوند .
این خاصیت اگر True باشد در زمانی که کنترل های درون Form جای نگیرند در اطرافش نوار پیمایش Scroll ظاهر می گردد .
بطور مثال کافی است تعدادی کنترل را درون فرم قرار دهید و سپس فرم را تا جایی که میخواهید کوچک نمایید تا کنترل های درونی فرم پنهان گردد . حال خاصیت مربوطه را True نمایید مشاهده مینمایید که در د طرف فرم اسکرول بار نمایش داده میشود.
واحد اندازه گیری متون درون Form می باشد که به صورت یک پوسته بوده و تأثیر چندانی در طراحی ندارد.
این خاصیت زمانی که True باشد اجازه میدهد تا اشیاء خارجی را درون Form با عمل Drag وارد نمود مثل آنکه میخواهیم عکسی را درون Photoshop کشیده و رها نمایید یا صوت MP3 را با کشیدن روی یک پلیر اجراء نماییم.
نکته: ابتدا باید کدهای Drag & Drop را بسازیم که در ادامه آموزشها بیان خواهد گردید.
ارائه خصوصیت به کنترل ها که میتوان از میان نام های درون کنترل انتخاب نماییم.
عنوان متن توضیحی که در خاصیت AccessibleDescription توضیح داده شده است
در این خاصیت شما می توانید توضیحی برای کنترل های بصری بنویسید تا در صورت نیاز متوجه شوید که چه عملی را انجام می دهند.
عمدتاً برنامه نویسان پس از چند سال به یکی از پروژه های قدیمی مراجعه میکنند باید با مطالعه مجدد پروژه متوجه شوند چه فرایندی را ساخته اند. لذا با نوشتن توضیحات در این بخش بسیاری از مشکلاتشان در آینده حل میگردد.
این خاصیت در صورتی فعال میشود که شما ابتدا دکمه ای از نوع Button را درون Form قرار دهید سپس هر کدی را که میخواهید را درون آن بنویسید به طور مثال
MsgBox("یا علی گفیم و عشق آغاز شد")
حال خاصیت AcceptButton را برابر Button1 قرار دهید (این در صورتی است که خاصیت Name کنترل را تغییر ندهید) هم اکنون اگر تمرکز سیستم روی کنترل دیگر بود با زدن کلید Enter فرامین درون Button1 اجراء می گردد. به طور مثال اکثر فرمهای ویندوز در هر نقطه از فرم با زدن Enter ذخیره سازی انجام شده و خارج می شود مانند بخش Date and Time یا Sound در کنترل پنل.
نام کنترل می باشد که کلیه کد نویسی ها بر مبنای آن انجام می گیرد و در هنگام کد نویسی قادر به تغییر نیست .بهتر است نام گذاری کنترلها بر اساس روش مجارستانی انجام بگیرد که این عمل برای مبتدی ها توصیه نمی شود .
به طور مثال: دکمه ای برای ذخیره سازی اطلاعات دانش آموزان است به شکل زیر نام گذاری می نماییم
Btn_Save_New_Student
بیانگر دانش آموزان - به معنای اطلاعات جدید - نوع فرم ذخیره سازی است – نام اختصاری Button
Lst_View_ Debtor_Student
بیانگر دانش آموزان – فهرست نمایشی بدهکاران - نوع فرم نمایشی است – نام اختصاری Listbox
با سلام خدمت تمامی دوستان عزیز
من در این مقاله میخواهم تا با مقایسه فنی بین دو زبان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 ندارند. در واقع چون ادبیاتC# خیلی شبیه جاوا و C است، این ویژگی می تواند برخی از برنامه نویسان جاوا را قانع کند . واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.
امید وارم از این مقاله استفاده لازم را ببرید