X
تبلیغات
آموزش سي شارپ و برنامه نويسي شي گراء

آموزش سي شارپ و برنامه نويسي شي گراء

آموزش سي شارپ توسط مسعود طباطبايي | MasoudTB Persian Post about .NET & CSharp

سلام برهمه دوستان،

باید به اطلاع شما دوستان گرامی برسونم که متاسفانه به علت از دست دادن دامنه Tabatabaei.info و مشکلاتی که برای ویدئو ها و مطالب آموزشی این وبلاگ به وجود آورد ، از این پس مطالب جدید و آموزش های بنده در وب سایت جدیدم به آدرس http://www.masoudtb.ir ارائه خواهد شد. در تلاش هستم تا اطلاعات و مطالب ارائه شده در این وبلاگ را نیز به سرعت به وبلاگ جدیدم منتقل کنم.


منتظر نظرات شما دوستان عزیز هستم
موفق باشید
مسعود طباطبایی

+ نوشته شده در  چهارشنبه چهاردهم تیر 1391ساعت 17:23  توسط مسعود طباطبايي | MasoudTB  | 

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

دوره اول 4.0 ASP .NET که روز های جمعه ساعت 9 الی 14 می باشد.

دوره دوم ASP .NET MVC 3.0 که روزهای دوشنبه و چهارشنبه ساعت 17:30 الی 20:30 می باشد.


موفق باشید.
+ نوشته شده در  سه شنبه سی ام خرداد 1391ساعت 11:34  توسط مسعود طباطبايي | MasoudTB  | 

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

در دات نت یک 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 را خوانده و برای کاربران نمایش دهید. در قسمت بعدی این مثال را ادامه خواهیم داد.

+ نوشته شده در  یکشنبه سی ام خرداد 1389ساعت 21:26  توسط مسعود طباطبايي | MasoudTB  | 

قسمت سوم از سری ویدئوهای آموزش Caching در ASP .NET است. در این قسمت در رابطه با SQL Cache Dependency را بررسی می کنم.

نمایش ویدئو آموزشی Caching در ASP .NET - قسمت چهارم

دانلود مثال ویدئو آموزشی Caching در ASP .NE - قسمت چهارم


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

+ نوشته شده در  جمعه هفدهم اردیبهشت 1389ساعت 0:35  توسط مسعود طباطبايي | MasoudTB  | 

قسمت سوم از سری ویدئوهای آموزش Caching در ASP .NET است. در این قسمت در رابطه با Cache Dependency نوع File بررسی می کنم.امیدوارم که مفید باشه.

در این ویدئو جدید ، بحث ASP .NET Caching را ادامه می دهیم:

نمایش ویدئو آموزشی Caching در ASP .NET - قسمت سوم

دانلود مثال ویدئو آموزشی Caching در ASP .NE - قسمت سوم

منتظر انتقادات و پیشنهادات هستم.

+ نوشته شده در  یکشنبه دوازدهم اردیبهشت 1389ساعت 0:31  توسط مسعود طباطبايي | MasoudTB  | 

سلام بر همه دوستان عزیز ،

سال نو بر همه شما مبارک باد. امیدوارم که سال 89 سالی سرشار از محبت ، امیدواری و نشاط باشه.
سال 88 ، خیلی فرصت نکردم که باهاتون باشم ، امیدوارم که امسال بتونم بیشتر در خدمتتون باشم.

هر روزتان نوروز ، نوروزتان پیروز

+ نوشته شده در  سه شنبه دهم فروردین 1389ساعت 11:29  توسط مسعود طباطبايي | MasoudTB  |