آموزش سی شارپ - کار کردن با فایل ها

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

در دات نت یک namespace به نام System.IO وجود داره که داخلش کلی کلاس مختلف برای کارکردن با فایل ها وجود دارد. ابتدا اجازه بدین در رابطه با مفهومی به نام Stream توضیح بدم. Stream در واقع به یک سلسله از بایت ها اشاره میشه. حالا شما می تونید خودتون یک Stream ایجاد کنید و یا اینکه از Stream های بوجود آمده توسط دیگران استفاده کنید. در System.IO یک کلاس abstract به نام Stream وجود دارد که کلاس های زیر از آن به ارث رفته اند. نکته مشترک بین این کلاس ها این است که تمامی آن ها در واقع مجموعه ای از بایت های کنار هم هستند که می توانند حاوی اطلاعات باشند. شکل زیر چند کلاس که از کلاس Stream به ارث رفته اند را نمایش می دهد:

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

NetworkStream: این کلاس هم یک مدل Stream است که در شبکه تبادل می شه و متناسب با نیازمندی های شبکه متد ها و خصوصیات خاص خود را دارد.

MemoryStream: این کلاس هم به شما امکان می ده تا یک سری اطلاعات را در حافظه نگهداری کنید. معمولا وقتی می خواهیم که یک Stream تولید بشه ولی نمی خواهیم که روی شبکه و یا فایل ذخیره بشه از این کلاس استفاده می کنیم.

برای اینکه این مفاهیم را بهتر درک کنیم می خواهم یک مثال ایجاد کنم که با فایل های متنی کار می کنه. حتما همه شما نرم افزار notepad ویندوز را دیدید. مثال ما هم شبیه به notepad خواهد بود. برای اینکار از یک پروژه نوع ویندوز استفاده می کنم و در داخل فرم اصلی نرم افزارم یک TextBox قرار می دهم. خصوصیت Multiline را به true ست می کنم و خصوصیت Dock را Fill تنظیم می نمایم و در نهایت اسم کنترل را به txtContent ست می کنم. سپس یک منوی اصلی با عنوان "پرونده" و چهار زیر منو با عناوین "جدید" ، "باز کردن" , "ذخیره" و در نهایت "خروج" ایجاد می نمایم. 

پس از انجام مراحل فوق فرم اصلی شما باید به این ترتیب باشد:

حالا من به دو متغیر نیاز دارم. متغیر اول برای اینکه بدونم که در هر لحظه چه فایلی باز شده است (من مسیر فایلی که باز کردم را نگه می دارم) از جنس string و با نام currentFilePath نگه می دارم. وقتی که فایل جدید دارم مقدار این متغیر را به string.Empty یا همان "" ست می کنم. متغیر دوم ، برای این است که بدونم آیا فایلی رو که بازکردم تغییر دادم یا نه. این متغیر را از جنس bool و با اسم isDirty نگه می دارم. در صورتیکه این مقدار این متغیر به true ست شده باشه معنی اش اینه که کاربر از زمانی که فایل را باز کرده تغییری در آن ایجاد کرده است.

حالا روی منوی جدید دوبار کلیک می کنم تا متد Handler برای رویداد کلیک این منو آیتم ایجاد شود. در این متد من باید 3 کار اصلی در این متد انجام بدم:

1. اطلاعات موجود در TextBox فرم را پاک کنم.
2. متغیر currentFilePath را به string.Empty ست کنم. (با اینکار اعلام میکنم که یک فایل جدید دارم)
3. متغیر isDirty را به false ست کنم. (با اینکار اعلام می کنم که هنوز کاربر تعییری ایجاد نکرده است)

پس شما باید این سه خط کد را داشته باشید:

private void mnuFileNew_Click(object sender, EventArgs e)
{
  txtContent.Text = string.Empty;
  currentFilePath = string.Empty;
  isDirty = false;
}
برروی منوی "بازکردن" دوبار کلیک می کنم و داخل متد Handler مربوط به رویداد کلیک کد زیر را می نویسم.
در خطا اول این کد یک شیء از جنس OpenFileDialog ایجاد می کنم. این شیء برای ایجاد پنجره انتخاب فایل استفاده خواهد شد. این پنجره امکان انتخاب کردن انواع فایل ها را داره ولی من می خواهم که فقط فایل های با پسوند txt را انتخاب نمایم. برای همین منظور در خط دوم این کد با استفاده از خصوصیت Filter مقدار مورد نظرم را به صورت یک string وارد می کنم. در خط سوم با استفاده از متد ShowDialog منتظر می مانم که کاربر فایل مورد نظرش را انتخاب نماید. در صورتیکه کاربر بر روی گزینه Cancel کلیک کند از این متد خارج خواهم شد ولی غیر این صورت فایل را با استفاده از خطوط بعدی باز کرده و اطلاعات آن را بر روی TextBox موجود در صفحه نمایش می دهم. ضمنا مسیر فایل باز شده را در متغیر currentFilePath را ست می کنم و متغیر isDirty را به false مشخص میکنم.

حالا باید فایل مورد نظرم را باز کنم و محتویات آن را خوانده و درون TextBox وارد نمایم تا کاربر بتواند متحویات آن را ویرایش نماید. برای اینکار باید یک شی از جنس FileStream ایجاد کنم. متد سازنده (Constructor) این کلاس دارای چندین ورژن مختلف با ورودی های مختلف می باشد. من از ورژنی استفاده می کنم که مسیر فایل و مقداری از جنس FileMode را به عنوان ورودی از من می گیرد. مقدار مسیر فایل را از خصوصیت FileName شی opf و مقدار FileMode را به Open (برای بازکردن فایل) پاس می کنم.

سپس یک شیء از جنس StreamReader که وظیفه خواندن اطلاعات موجود در یک Stream را دارد ، ایجاد می کنم. در متد سازنده این کلاس شیء FileStream خود را پاس می کنم تا مشخص کنم که قصد دارم محتویات این Stream را بخوانم. در کلاس StreamReader متدهای مختلفی برای خواندن محتویات وجود دارد که من از متد ReadToEnd برای خواندن کلیه محتویات تا انتهای این فایل استفاده کرده ام. این متد دارای خروجی از نوع String می باشد. حالا خروجی این متد را داخل TextBox موجود در صفحه قرار داده و خصوصیت isDirty را به false و خصوصیت currentFilePath را به مسیر فایل باز شده ست می کنم:

private void mnuFileOpen_Click(object sender, EventArgs e)
{
    OpenFileDialog opf = new OpenFileDialog();
    opf.Filter = "Text Files (*.*)|*.txt";
    if(opf.ShowDialog() == DialogResult.OK)
    {
        FileStream selectedFile = new FileStream(opf.FileName, FileMode.Open);
        StreamReader reader = new StreamReader(selectedFile);
        txtContent.Text = reader.ReadToEnd();
        reader.Close();
        isDirty = false;
        currentFilePath = opf.FileName;
    }
}
اگر مثال خود را تا اینجا تست کنید شما می توانید محتویات یک فایل Text را خوانده و برای کاربران نمایش دهید. در قسمت بعدی این مثال را ادامه خواهیم داد.

آموزش برنامه نويسي تحت ويندوز - سي شارپ دات نت - قسمت چهارم

رويداد هاي فرم - Form Events

همانطور که قبلا صحبت شده بود تمامی فرم هایی که شما ایجاد می کنید از یک کلاس به نام System.Windows.Forms.Form به ارث رفته اند و در واقع فرم هایی که شما در محیط Visual Studio .NET ملاحظه می کنید کلاس هایی هستند که از کلاس Form به ارث رفته اند. در کلاس Form تعداد زیادی رویداد تعریف شده است که به شما امکان می دهد تا در مواقع مورد نظر اطلاعاتی در رابطه با اتفاقاتی که بر روی فرم شما می افتد داشته باشید.

رويداد  Form Load

اولین رویدادی که معمولا در فرم استفاده می شود (رویداد پیش فرض) رویداد Load می باشد. این رویداد دارای آرگونی از جنس EventArgs می باشد (که به این معناست که هیچ اطلاعات خاصی در رابطه با رویداد به شما نمی دهد). معمولا در مواقعی که شما می خواهید قبل از نمایش فرمتان یک سری کار را انجام دهید از این رویداد استفاده می کنید. برای استفاده از این رویداد کافی است که فرمتان را باز کنید (نمایش Visual) سپس بر روی فرم خود دوبار کلیک کنید. در این صورت یک متد به نام Form_Load در کد کلاس فرم شما ایجاد خواهد شد. تمامی کد هایی که در این متد نوشته شوند در موقع Load شدن فرم شما (قبل از نمایش) اتفاق خواهد افتاد. به عنوان مثال فرض کنید که شما یک فرم صدور فاکتور دارید. حالا موقع Load می خواهید که فرمتان اطلاعات قبلی ذخیره شده در بانک اطلاعاتی را خوانده و در یک GridView که در قسمت پایین فرم شما است نمایش دهد.

رويداد Form Closing

رویداد Form Closing زمانی رخ می دهد که درخواستی برای بستن فرم تان ارجاع شده باشد. چه این درخواست توسط کاربر با زدن کلید های Alt + F4 باشد(یا کلیک بر روی دکمه X) , چه از طریق کد و با فراخوانی Application.Exit یا this.Close و یا از هر طریق دیگر. این رویداد دارای آرگومانی از جنس FormClosingEventArgs می باشد که اطلاعاتی همچون منبع درخواست برای بسته شدن فرم (از طریق خاصیتی به نام CloseReason که از جنس یک enum به نام CloseReason) و خاصیتی به نام Cancel برای ممانعت از بسته شدن فرم می باشد.

فرض کنید که در یک فرم ورود اطلاعات فاکتور کاربر شما اقدام به ایجاد یک فاکتور جدید کرده است , اما در نهایت فراموش می کند که کلید ذخیره را بزند و بر روی دکمه بستن فرم کلیک می کند. حالا شما می توانید با چک کردن وضعیت فرمتان از طریق رویداد FormClosing و با استفاده از خصوصیت Cancel در صورت لزوم از بسته شدن فرمتان ممانعت به عمل آورید.

استفاده از MessageBox

گاهي اوقات در نرم افزارهاي تحت ويندوز براي نمايش اطلاعات از کلاس MessageBox استفاده مي کنيم. براي اين کار کافي است متد Show از کلاس MessageBox را صدا بزنيم و پارامترهاي لازمش را مهيا کنيم. متد Show در کلاس MessageBox داراي چندين overload مي باشد. در مثال بالا من ابتدا پيغام هشداري که مي خواهم نمايش دهم را نويشتم و سپس عنوان پيغام را مشخص کردم . بعد کليد هايي که بايد نمايش دهند را از طريق يک enum به نام MessageBoxButton مشخص کردم ، سپس آيکون مورد نظر را انتخاب کردم (MessageBoxIcon) و در نهايت کليد پيش فرض را مشخص کنيد.

دقت کنيد که انتخاب کليد پيش فرض در خيلي از مواقع حياتي است. مثلا شما قبل از حذف يک رکود بيا مانند مثال قبل موقع بسته شدن فرمتان با استفاده از MessageBox يک تاييديه از کاربر مي خواهيد:

البته مي توانيد با پاس کردن MessageBoxOption.RtlReading و همينطور MessageBoxOption.RightAlign امکان نمايش متون فارسي را از راست به چپ داشته باشيد.

در بيشتر موارد کاربران شما بدون توجه به متن MessageBox با زدن کليد Enter از شرٍ MessageBox خلاص مي شوند. پس من به صورت پيش فرض کليد دوم يعني No  را انتخاب مي کنم که اگر Enter را کليک کرد ، رکورد حذف نشود و در صورتي که کاربر صراحتاَ کليد Yes را فشرد ، آن وقت رکورد را حذف مي کنم.

نکته اي که نبايد فراموش کنيد اين است که متد Show در کلاس MessageBox يک خروجي از جنس DialogResult به شما مي دهد. در نتيجه شما مي توانيد تشخيص دهيد که بعد از نمايش MessageBox کاربر شما کدام گزينه را انتخاب کرده و در مقابل آن عکس العمل مناسب را انجام دهيد.

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

ادامه دارد...

آموزش برنامه نويسي تحت ويندوز - سي شارپ دات نت - قسمت سوم

خصوصيات کلاس فرم - Form Properties

بعد از شناخت ساختار هريک از فرم ها در سي شارپ ، به بررسي خصوصيات مهم کلاس فرم مي پردازيم. وقتي شما يک فرم ايجاد مي کنيد ، براي فرمتان يک اسم مشخص مي کنيد ، اين اسم از طريق پنجره Properties و خصوصيت Name قابل دسترسي است. توجه داشته باشيد که اسامي به صورت پيش فرض با Form1 ، Form2 و .... ساخته مي شوند. براي مثال من اسم فرم اصلي خودم را به frmMain تغيير مي دهم. (پيشنهاد مي کنم در نام گذاري فرم هايتان يک قانون خاص را رعايت کنيد. به عنوان مثال من اسامي فرم ها را با frm شروع مي کنم و بعد اسم فرمم را ذکر مي کنم. استفاده از يک فرمول شبيه به اين خوانايي کد شما را بالا مي برد.)

خوب شما در تمامي فرم ها (به صورت پيش فرض) يک متن را در قسمت بالا سمت چپ به صورت عنوان فرم مي بينيد. براي مشخص کردن عنوان فرم خود از خصوصيت Text استفاده کنيد. خصوصيات ControlBox براي نمايش يا عدم نمايش Icon ، کليد بيشينه ، کليد کمينه و کليد بستن فرم استفاده مي شود. البته شما مي توانيد نمايش يا عدم نمايش کليد هاي بيشينه و کمينه را با استفاده از خصوصيات MaximizeBox و MinimizeBox کنترل کنيد. همچينين نمايش يا عدم نمايش آيکون فرم را با استفاده از گزينه ShowIcon مشخص کنيد. ضمنا با استفاده از گزينه Icon مي توانيد آيکون فرمتان را مشخص کنيد. همچنين با استفاده از گزينه ShowInTaskBar مي توانيد مشخص کنيد که فرم شما در TaskBar ويندوز نمايش داده شود يا خير.

خصوصيت BackColor و ForeColor براي مشخص کردن رنگ پس زمينه فرم و رنگ متون فرم استفاده مي شوند. خصوصيات BackgroundImage و BackgroundImageLayout براي مشخص کردن تصوير پس زمينه فرم و همينطور نحوه نمايش تصوير پس زمينه استفاده مي شود. به عنوان مثال اگر تصوير پس زمينه شما کوچکتر از اندازه فرم شما باشد. شما مي توانيد با مشخص کردن مقدار Tile يا Stretch براي BackgroundImageLayout اندازه تصوير را با فرمتان مطابقت دهيد. در حالت Tile تصوير شما به تعداد لازم بر روي صفحه تکرار خواهد شد و در حالت Stretch تصوير شما به اندازه فرمتان کش داده خواهد شد.


با استفاده از گزينه Size مي توانيد اندازه فرمتان را مشخص کنيد. همچنين مي توانيد با استفاده از خصوصيت WindowState وضعيت اندازه فرمتان را مشخص نماييد. مقادير Normal ، Minimize و Maximized را مي توانيد استفاده کنيد. در صورتيکه مقدار اين خصوصيت را Maximize يا Minimized ست کنيد خصوصيت Size شما اثر نخواهد کرد.

گزينه StartPosition مي توانيد محل  باز شدن فرمتان را مشخص نمائيد. در صورتيکه مقدار اين خصوصيت را به Manual ست کنيد مي توانيد با استفاده از خصوصيت Location محل نمايش فرم را به صورت X,Y مشخص کنيد.  يا اينکه با استفاده از مقادير CenterScreen يا CenterParent فرمتان را در وسط صفحه نمايش يا وسط فرم پدر نمايش دهيد. مقادير WindowsDefaultBound و WindowsDefaultLocation در محل پيش فرض پنجره در ويندوز مي باشند با اين تفاوت که وقتي مقدار بر روي WindowsDefaultBound ست شده باشد اندازه فرمتان نيز به اندازه پيش فرض Windows تغيير خواهد کرد.


فرم خصوصيات بسيار ديگري دارند که در پست هاي بعدي توضيح خواهم داد. در پست آينده به رويداد هاي فرم ها مي پردازيم. ادامه دارد...

آموزش برنامه نويسي تحت ويندوز - سي شارپ دات نت - قسمت دوم

بررسي فرم ها در برنامه هاي تحت ويندوز

تمامي فرم هايي که شما ايجاد مي کنيد از يک کلاس به نام Form در System.Windows.Form به ارث رفته اند.(مطالب بيشتر در مورد ارث بري در سي شارپ) پس بياد داشته باشيد که وقتي شما يک فرم به برنامه تان اضافه مي کنيد ، در واقع يک کلاس جديد به پروژه اضافه مي کنيم. کلاسي که ايجاد مي شوند کلاس هايي Partial هستند. (شکل 1-2) کلاس هاي Partial کلاس هايي هستند که مي توانند در بيش از يک فايل تقسيم شوند. در واقع تعريف اين کلاس ها از مجموع کد هاي نوشته شده در چند فايل ايجاد مي شود. (مطالب بيشتر در مورد Partial کلاس ها) اما چرا؟

تصوير 1-2

محيط Visual Studio .NET يک محيط Visual است ، به اين معني که شما مي توانيد فرم هايتان را به صورت گرافيکي (Visual) طراحي کنيد. مثلا شما از ليست کنترل هايتان (Toolbox) يک کنترل از نوع TextBox ، يک کنترل از نوع Label و .... بر روي فرم تان قرار مي دهيد. محل قرار گيري اش را مشخص مي کنيد ، اندازه و ساير اطلاعاتش را مشخص مي نمائيد. اما توجه داشته باشيد که اين محيط Visual در واقع در پس اين ظاهر گرافيکي براي شما کد هايي توليد مي کند که در نتيجه آن کد ها فرم شما به صورتي که ميبينيد نمايش داده مي شود.

به عنوان مثال وقتي شما يک TextBox روي صفحه ايجاد مي کنيد ، در واقع يک شيء از يک کلاس TextBox در System.Windows.Forms ايجاد مي کنيد و آن را به ليست کنترل هاي فرم تان اضافه مي کنيد. سپس اطلاعاتي مثل اندازه ، محل قرارگيري ، نام کنترل (ID يا Name) و .... را تعيين مي کنيم. حالا اين کد ها کجا مي رود؟

اگر از منوي View گزينه Solution Explorer را انتخاب کنيد ، خواهيد ديد که يک فايل به نام Form1.cs داريم ، اين همان فرم اول شماست. حالا از گزينه + کنار نام اين فايل را کليک کنيد ، خواهيد ديد که يک فايل به نام Form1.Designer.cs نيز وجود دارد. (شکل 2-2) بر روي فايل دوبار کليک کنيد. داخل اين فايل ادامه تعريف کلاس Form1 با استفاده از تعريف Partial را خواهيد يافت. حالا اگر داخل اين فايل را نگاهي بياندازيد ، خواهيد ديد که Region به نام Windows Form Designer generated code وجود دارد (شکل 3-2) که اگر آن را باز کنيد يک متد به نام InitializeComponent در اين کلاس تعريف شده است ، داخل اين متد تعريف و ست شدن خصوصيات کنترل Textbox تان را خواهيد يافت. (شکل 4-2) اينجا جايي است که تغييرات شما در محيط ويژوال ثبت و نگهداري مي شوند. توجه به اينکه بسيار مهم است که تمامي اين کد ها (شامل کد هايي که در فايل Form1.cs هستند + کد هاي موجود در فايل Form1.Designer.cs) باهم تعريف کلاس شما را مي سازند.

تصوير 2-2

تصوير 3-2

تصوير 4-2

پس دليل خرد شدن تعريف کلاس Form1 اين است که بتوان تعريف هايي که Visual Studio .NET ايجاد مي کند را از کد هاي که شما به صورت دستي مي نويسيد جدا کند تا شما راحت تر باشيد. (دوستاني که با سي شارپ 1 و 1.1 کار کرده اند بايد به ياد داشته باشند که در Visual Studio .NET نسخه هاي 2002 و 2003 چون تعريف Partial وجود نداشت ، اين کد ها داخل يک Region در همان فايل Form1.cs وجود داشت.)

ادامه دارد...

آموزش برنامه نويسي تحت ويندوز - سي شارپ دات نت - قسمت اول

ايجاد يك پروژه تحت ويندوز در دات نت

براي ايجاد يك پروژه تحت ويندوز كافي است بعد از با كردن محيط توسعه نرم افزار ويژوال استوديو دات نت (Visual Studio .NET) بر روي زبان سي شارپ كليك كنيد و سپس از قسمت Template گزينه Windows Application را انتخاب نمائيد. سپس نام پروژه خود را تايپ كرده و مسير پروژه را مشخص نمائيد. (شکل 1-1)

بعد از ايجاد پروژه براي اينكه ببينيم هر پروژه تحت ويندوز شامل چه فايل هايي است از منوي View گزينه Solution Explorer را انتخاب كرده و به ساختار فايل هاي پروژه خود نگاهي بياندازيم. (شکل 2-1)

همانطور كه مي بينيد هر پروژه تحت ويندوز به صورت پيش فرض شامل چند قسمت مي باشد:
Properties - در اين قسمت تنظيمات و خواص پروژه مي باشد. در مورد اين قسمت در قسمت هاي بعدي توضيح خواهم داد.
References -در اين قسمت ارجعات اين پروژه به Assembly ها و پروژه هاي ديگر مي باشد.
Form.cs - يك فرم كه به صورت پيش فرض در  پروژه موجود است.
    البته اگر بيشتر دقت کنيد خواهيد ديد که زير Form1.cs يک فايل ديگري به نام Form1.Designer.cs هم وجود دارد.
Program.cs - كلاس Program كه برنامه ما از متد Main  اين كلاس شروع مي شود.

از کلاس Program شروع مي کنيم. اگر بر روي اين کلاس دوبار کليک کنيد تا آن را باز کنيد ، خواهيد ديد که اين کلاس يک کلاس static است که داراي يک متد به نام Main مي باشد. (شکل 3-1) همانطور که قبلا هم گفتم ، اين متد محلي است که Application شما از آنجا شروع خواهد شد. داخل اين متد چند خط کد نوشته شده است. خطوط اول و دوم براي ايجاد حالت ويژوال نرم افزار شماست که بعد ها بيشتر توضيح خواهيم داد. اما در خط از متد Run کلاس Application استفاده شده است. کلاس Application يک کلاس Utility براي دسترسي يافتن به اطلاعات نرم افزار شماست. اين کلاس در namespaceي به نام System.Windows.Forms قرار دارد. System.Windows.Forms يکي از مهم ترين namespace هايي است که در توليد Windows App ها استفاده مي کنيم.


تعيين فرم اصلي نرم افزار

متد Run در کلاس Application فرم اصلي نرم افزارتان را براي شروع نرم افزار اجراء مي کند. در واقع در سي شارپ ويندوز براي اينکه فرم اصلي نرم افزارتان را مشخص کنيد بايد يک شيء از جنس يک Form به اين متد پاس کنيد. (شکل 4-1) همچنين يک متد به نام Exit هم در اين کلاس وجود دارد که براي خارج شدن از نرم افزار استفاده مي شود.

فرم چيست؟

قبل از شروع برنامه نويسي در Windows Application توجه به اين نکته که فرم هاي ويندوزي نيز کلاس هستند و تمامي شرايط ، قوانين و ... که در دوره قبلي اشاره شد ، در مورد آن ها نيز صدق مي کند. مهم ترين تفاوت آن ها اين است که در محيط Visual Studio .NET داراي يک Visual Designer مي باشند که به شما امکان طراحي ويژوال را مي دهد. دقت کنيد که تمام تغييراتي که شما توسط Designer ايجاد مي کنيد به صورت کد در کلاس شما اضافه مي شوند. يعني اگر شما همان کد ها را با استفاده از يک نرم افزار ساده مثل Notepad در کلاستان تايپ کنيد ، همان شکل ظاهري را خواهيد داشت. 

کلاس فرم يک کلاس پايه است که داراي امکانات بسياري است که در طول دوره به آن ها مي پردازيم. وقتي شما يک فرم جديد به نرم افزارتان اضافه مي کنيد ، در واقع يک کلاس جديد با نام دلخواه (مثلا Form1 يا frmMain) ايجاد مي کنيد که از کلاس Form به ارث رفته است. (شکل 5-1) پس تمام امکانات کلاس پايه به شما ارث مي رسد. يکي از اين امکانات همان نحوه نمايش فرم در ويندوز مي باشد. براي ديدن کد هاي يک فرم کافيست در Solution Explorer آن را انتخاب کنيد و بر روي آن راست کليک کرده و در نهايت گزينه View Code را کليک نمائيد. (اينکار را مي توانيد با استفاده از کليد F7 نيز انجام دهيد). در رابطه با کد نويسي در فرم در قسمت بعدي توضيح خواهم داد.


ايجاد فرم هاي جديد

براي ايجاد فرم جديد در پروژه خود کافيست در Solution Explorer بر روي پروژه خود راست کليک کرده و گزينه Add کليک کرده و در نهايت گزينه Windows Form را انتخاب نمائيد. در پنجره اي که باز مي شود نام فرم خود را انتخاب نمائيد. دقت فرمائيد که نام فرم شما ، نام کلاس شما نيز خواهد بود. (شکل 6-1)

اضافه کردن کنترل ها بر روي فرم

براي اضافه کردن کنترل ها بر روي فرم خود ، از Toolbox (براي فعال کردن Toolbox از کليد هاي Alt + Ctrl + X استفاده کنيد) کنترل خود را انتخاب کرده و بر روي فرم خود Drag & Drop کنيد.

تست کردن فرم جديد

براي تست کردن فرم خود کافي است در کلاس Program داخل متد Main فرم اصلي را به فرم جديد خود تغيير دهيد. به عنوان مثال در صورتيکه فرم جديد شما Form2 مي باشد ، کافيست يک شيء از اين کلاس به متد Run در کلاس Application پاس کنيد. (شکل 7-1)


دانلود اين قسمت به صورت Pdf

ادامه دارد....