وباکا

آموزش تخصصی برنامه نویسی وب

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

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

با ایجاد یک پروژه از نوع Windows Formsیک فایل حاوی تابع اصلی برنامه بنام program.cs و یک فرم بنام Form1 به پروژه اضافه می شوند. فایل program.cs دارای محتوای زیراست:

کد فایل program.cs در سی شارپ

در فایل program.cs ، با استفاده از متذ Runفرم اول برنامه اجرا می شود.

برای هر کدام از فرم های اضافه شده به برنامه (مثلاً Form1) دو فایل جداگانه موجود است:

  • یک فایل با نام Form1.cs
  • یک فایل با نام Form1.Designer.cs

 

 

فایل کدنویسی فرم From1.cs : پیاده سازی توابع مربوط به رویدادهای عناصر یا توابع دیگر مورد نیاز در این فایل انجام می شود.در اين فايل بخشي از كلاس Form1 قرار گرفته كه بطور پيش فرض داراي يك تابع سازنده مي باشد. در تابع سازنده متدي بنام InitializeComponentفراخواني شده كه وظيفه مقداردهي اوليه اجزاي فرم را برعهده دارد. دستورات قرارگرفته در تابع سازنده، در زمان ايجاد فرم بصورت خودكار اجرا خواهند شد.کد فرم در سی شارپ

تابع InitializeComponentکه در تابع سازنده فایل Form1.cs فراخوانی شده بود در این فایل پیاده سازی شده است .

لازم به ذکر است  تابع سازنده تابعی است همنام با خود کلاس که هنگام ایجاد نمونه از نوع کلاس (مثلاً بازکردن فرم) بصورت خودکار فراخوانی می شود.

 

فایل طراحی فرم From1.Designer.cs : حاوی تعریف متغیرهایی برای هر کدام از اجزای فرم و تنظیم خصوصیات آنها، با اضافه کردن عناصر به فرم و اعمال تنظیمات روی آنها، بصورت خودکار دستوراتی به این فایل اضافه می شود.در حالت عادی برنامه نویس نیازی به دستکاری این فایل ندارد.

 

از دیدگاه برنامه نویسی شی گرا:

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

عملیات اصلی روی فرم ها

در این قسمت برای آموزش روش کار با فرم های ویندوزی ، عملیان روی فرم ها را بررسی می کنیم.

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

افزودن فرم به پروژه

روی نام پروژه در پنجره Solution Explorer کلیک راست کرده و گزینه Add | Windows From را اجرا می کنیم.

نمایش فرم

برای نمایش فرم، ابتدا یک متغیر از نوع کلاس فرم تعریف کرده و به آن حافظه تخصیص داده و سپس متد Show() یا ShowDialog() را برای نمایش فرم اجرا می کنیم:
Form2 f = new Form2();
f.Show();
یا
f.ShowDialog();

متد ShowDialog() فرم را بصورت کادر محاوره ای باز می کند، یعنی تا وقتی فرم جدید باز است امکان برگشت به فرم قبلی وجود ندارد.

پیاده سازی فرم های MDI

در سی شارپ امکان تعریف یک فرم بعنوان فرم مادر (MDI) و تعریف فرم های دیگر بعنوان فرزندان آن وجود دارد.به این منظور، برای فرم MDI خاصیتIsMdiContainer را مقدار true می دهیم:

IsMdiContainer = true;

وهنگام نمایش یک فرم فرزند، در فرم MDI به صورت زیر عمل می کنیم:
Form2 f = new Form2();
f.MdiParent = this;
f.Show();

تا فرم Form2 بصورت فرزند  فرم فعلی تعریف شود .

تبدیل یک فرم به Start Up

 

فرم startup فرم اول برنامه است و به این منظور باید در برنامه اصلی (فایل program.cs)دستور زیر را به نام فرم مورد نظر اصلاح کنیم:
Application.Run(new Form1() );

بستن فرم

برای بستن فرم جاری کافی است متد Close() را اجرا کنیم و برای خروج از برنامه یا باید فرم اصلی برنامه بسته شود، یا اینکه متد Exit() به همراه کلاس Application  اجرا گردد :
Application.Exit();

خاصیت های فرم ها در سی شارپ

خاصیت ها و رویدادهای مهم مربوط به فرم که معمولاً برای دیگر ابزارها نیز تا حدودی قابل استفاده هستند در جداول زیر آمده اند:

خاصیت های مربوط به فرم

کاربرد خاصیت
فاصله از بالا Top
فاصله از چپ Left
عرض Width
ارتفاع Height
رنگ پس زمینه BackColor
رنگ متن ForeColor
نوع کادر(fixed: ثابت   sizeable : قابل تغییر) FormBorderStyle
فونت Font
متن و عنوان Text
جهت راست به چپ LeftToRight
محدودیت دسترسیPublic-Private Modifiers
درصد مات بودن Opacity
قرار گرفتن همیشه فرم بالای دیگر پنجره ها TopMost
موقعیت اولیه فرم در صفحه نمایش StartPosition
وضعیت اولیه فرم موقع بالا آمدن WindowState
داشتن جعبه کنترل ControlBox
داشتن دکمه حداکثرسازی MinimizeBox
داشتن دکمه حداقل سازی MaximizeBox
حداکثر اندازه فرم MaximumSize
MDI شدن فرم IsMdiContainer
تعیین دکمه ای که با زدن Enter روی فرم عمل می کند AcceptButton
تعیین دکمه ای که با زدن Esc روی فرم عمل می کند* CancelButton

رویدادهای فرم در سی شارپ

لیست رویداد های فرم در جدول زیر نشان داده شده است:

رویدادهای فرم

زمان وقوع رویداد
فعال شدن فرم Activated
غیرفعال شدن فرم Deactivate
بارگذاری فرم Load
کلیک روی فرم Click
دابل کلیک روی فرم DoubleClick
ورود به فرم Enter
ترک کردن فرم Leave
بعد از بسته شدن فرم FromClosed
حین بسته شدن فرم FormClosing
زدن دکمه صفحه کلید KeyPress
فشردن دکمه صفحه کلید KeyDown
رها کردن دکمه صفحه کلید KeyUp
حرکت دادن فرم Move
تغییر اندازه فرم Resize

تابع مربوط به هر رویداد بصورت پیشفرض دارای قالب زیر است:

privatevoid Form1_Load(object sender,EventArgs e)

   {

MessageBox.Show(“Welcome ! “);

   }

نام تابع نشان می دهد که این تابع برای رویداد بارگذاری (Load ) روی ابزار فرم 1 (From1) نوشته شده است. پارامتر sender به شیء اشاره می کند که رویداد روی آن اتفاق افتاده است و e  حاوی یکسری اطلاعات تکمیلی در مورد رویداد است. در داخل آن دستوری برای کادر پیغام Welcome! نوشته شده است.

بنابراین هنگام بارگذاری فرم این پیغام نمایش داده خواهد شد.

 

متدهاي مربوط به  فرم در سی شارپ

نام متد کاربرد
Show() نمایش فرم
ShowDialog() نمایش فرم بصورت محاوره ای
Close() بستن فرم
Hide() مخفی کردن فرم
Refresh() تازه سازی فرم

 

هر کدام از متدهای فوق یا باید به همراه شی فرم اجرا شوند یا اینکه روی فرم جاری:
Form2  f=new Form2();
f.ShowDialog();
f.Hide();
f.Close();

متغیر f یک شی از نوع کلاس Form2 می باشد.

یا برای اجرای متدهای فوق روی فرم جاری کافی است بنویسیم:
this.Close();
یا
Close();

this شی جاری (در اینجا فرم جاری )را مشخص می کند.

 

خواص و متدهای کلاس Application

کلاس Application دارای خواص و متدهای زیر است:

خاصیت ExecutablePath : مسیر و نام فایل اجرایی برنامه

خاصیت StartupPath : مسیر فایل اجرایی برنامه

متد Exit: قطع اجرای برنامه
Application.Exit();
متد Run: اجرای یک فرم
Application.Run(newForm1() );
 

فضاهای نامی در سی شارپ

فضای نامی(namespace) ، روشی برای سازماندهی کلاس های وابسته و یک روش جدید برای سازماندهی کدهای برنامه نویسی می باشد. بطور پیش فرض تمام کلاس های مربوط به یک پروژه در یک فضای نامی همنام با خود پروژه قرار می گیرند و یک فضای نامی می تواند در چند فایل فیزیکی گسترش پیدا کند.

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

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

امکان تعریف namespace ها بصورت تودرتو نیز وجود دارد:
namespace n1{
namespace n11 {
class c1{      …     }
        class c2{       …      }
}
  namespace n12{
   class c3{       …      }
 }
}

در مثال فوق کلاس c1 و c2 هر دو در یک فضای نامی با نام n1.n11 قرا دارند در حالی که کلاس c3 در فضای نامی با نام n1.n12 قرار دارد.

بطور کلی برای استفاده از یک کلاس قرار گرفته در فضای نامی دیگری ، یا باید قبل از نام کلاس، نام فضای نامی ذکر شود و یا با معرفی فضای نامی در ابتدای برنامه با کلمه using امکان دسترسی به کلاس های داخل آن فراهم شود.

فضاهای نامی که در ایتدای برنامه معرفی شده اند اغلب دارای کلاسهای مورد نیاز در آن برنامه هستند. بعنوان مثال برای استفاده از کلاس Form در برنامه، دو روش وجود دارد:

روش اول: نوشتن نام فضای نامی قبل از نام کلاس From
namespace WindowsFormsApplication3
{
publicpartialclassForm1 : System.Windows.Forms.Form
    {
            …
    }
}

روش دوم: معرفی کردن نام فضای نامی در ابتدای برنامه
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
publicpartialclassForm1 : Form
    {
            …
    }
}

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب