تبليغاتX
جادوي سي شارپ
دوست عزیزی ایمیل فرستاده بود و سوالاتی پرسیده بود. سوالات به همراه جوابشون:

نحوه پر کردن داخل اشکال بسته:

برای پر کردن داخل اشکال بسته از متدهای Fill کلاس Graphics استفاده می کنیم. این متدها عبارتند از:
FillClosedCurve ، FillEllipse، FillPath، FillPie، FillPolygon، FillRectangle، FillRectangles، FillRegion
از اسم هر کدوم از متدها پیداست که برای پر کردن داخل هر شکل از کدومشون باید استفاده کنیم.

نحوه باز کردن فایلهای CHM:

برای استفاده از فایلهای chm در C# باید از کلاس Help استفاده کنید. به کد زیر توجه کنید:

Help.ShowHelp(this, @"D:\Ebooks\IntroducingMicrosoftASP.NET AJAX.chm");

رسم دوباره اشکال:

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

فولدر App_Code در ASP.NET :

این فولدر به منظور محلی برای ذخیره کلاسها ، فایلهای .wsdl و Typed dataset ها تعبیه شده است و تمام مواردی که نام برده شد اگر در این محل ذخیره شوند در تمام صفحات Solution فابل دسترسی هستند. نکته قابل توجه در مورد این فولدر اینست که وقتی چیزی را در این مکان قرار میدهید VS2005 خودکار آنرا تشخیص میدهد و به نوع دلخواه و مطلوب آنرا کامپایل میکند.
برای ایجاد این فولدر روی Solution کلیک راست کنید و Add folder=>App_code folder را انتخاب کنید. روی فولدر ایجادی نیز کلیک راست کرده و Add New Item را انتخاب کنید. در اینجا امکان انتخاب محدودی دارید بین فایلهایی از نوع کلاس ، متنی، دیتاست، گزارش و دیاگرام کلاس. برای مثال فایل کلاس را انتخاب کنید و نام آن را Calculator.cs بگذارید و در آن کد زیر را بنویسید :

Using system;
Public class Calculator
{
Public int Add (int a, int b)
{ Return (a+b); }
}

فقط آنرا ذخیره کنید و حالا میتوانید در هر صفحه ای از Solution از این کد استفاده کنید. مثلا یک صفحه .aspx بسازید و روی آن فقط یک Label بگذارید و در رویداد Page_Load آن کد زیر را بگذارید :

Protected void Page_Load (object sender, System.EventArgs e)

Calculator myCalc = new Calculator ();
Label1.Text = myCalc.Add (12, 12).Tostring ();
}

وقتی این صفحه .aspx را اجرا میکنید توجه کنید که از کلاس Calculator بدون هیچ مشکلی استفاده میکند و احتیاجی به کامپایل آن پیش از استفاده ندارد. در واقع درست پس از ذخیره این کلاس ، همزمان قابلیت IntelliSense در متدهایی که کلاس پوشش میدهد قابل استفاده است.
حال فولدر App_Code و کلاس Calculator را دوباره باز کنید و متدی به نام Subtract را با کد زیر به آن اضافه کنید:

Public int Subtract (int a, int b)
{
Return (a – b) ;
}

فایل را ذخیره کنید و به صفحه .aspx برگردید . توجه کنید که کلاس دوباره کامپایل شده و متد جدید نیز در صفحه از طریق IntelliSense قابل دسترسی است.
هر آنچه در این فولدر گذاشته شود در یک اسمبلی تک کامپایل میشود. فایلهای کلاسی که در این فولدر هستند لازم نیست یک زبان ویژه را بکار ببرند یعنی اگر حتی تمام صفحات با VB نوشته شوند ، کلاس Calculator در فولدر App_Code می تواند به زبان C# باشد. البته اگر چند کلاس به زبانهای مختلف می خواهید داشته باشید نباید همه آنها را در ریشه این فولدر و در کنار هم قرار دهید. برای اینکه قادر باشید مثلا دو زبانVB و C# را کنار هم قرار دهید باید تغییرات زیر را انجام دهید :
ابتدا در شاخه App_Code دو زیر شاخه جدید بسازید مثلا به نامهای VB و CS و کلاسهای موردنظرتان را در شاخه مربوطه قرار دهید.
                    \ App_Code 
               \ VB
        Add.vb
               \ CS
  Subtract.cs
سپس در Web.Config (که باید خودتان به Solution اضافه کنید) بخش را بصورت زیر تبدیل کنید :

  
     
     
  


حالا شما می توانید هر کدی را به این دو زبان بنویسید و در شاخه های مرتبط قرار دهید و البته لزوما این دو شاخه نباید VB و CS باشند.

در انتها دوباره از ققنوس عزیز سپاسگذارم .. جواب سوالهارو ایشون دادن... من فقط app_code folder رو نوشتم... بقیه اش تقصیر من نیس... :ی....

شاد باشین....
+ نوشته شده در  پنجشنبه بیست و پنجم مرداد 1386ساعت 0:21  توسط آتاناز  | 
سلام...

یک مقاله در مورد مقایسه استفاده از dataset و datareader ، در این پست براتون میذارم..

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

DataSet VS DataReader

شاد باشین...

+ نوشته شده در  سه شنبه دوم مرداد 1386ساعت 21:36  توسط آتاناز  | 

سلام... نمیدونم در مورد snippet ها چیزی شنیدین یا نه! کدهای آماده کوچکی که در محیط Visual Studio وجود دارند و حتا رایگان در اختیار کاربران قرار میگیرند تا از اونها استفاده بشه. یه توضیح کوچیک و جمع و جور در قالب pdf با چند تا از این کدها رو که براتون داونلود کردم رو میذارم تا یه نگاهی بندازین بهشون. امیدوارم براتون مفید باشه.. چیزهای بدردبخوریَن و کار برنامه نویسی و بسیار راحت میکنن و سرعت اون رو بالا میبرن... مایکروسافته دیگه...

Snippets in VS

تا بعد... یا حق...

+ نوشته شده در  یکشنبه سوم تیر 1386ساعت 20:14  توسط آتاناز  | 
سلام... این Office 2007 خیلی آزارم داد تا بفهمم که نمیشه از توش کپی کرد تو ادیتور بلاگفا... خلاصه من و دوستم ۲ روز سر کار بودیم... تا بالاخره تصمیم گرفتیم منم با کلاس شم و مقاله ای منتشر کنم با عنوان آرایه ها در سی شارپ... که شامل دو قسمت قبلی و قسمت آخر معرفی آرایه ها در سی شارپه ... امیدوارم که براتون مفید باشه...

آرایه ها در #C

تا بعد.... یا حق....

+ نوشته شده در  چهارشنبه یازدهم بهمن 1385ساعت 21:36  توسط آتاناز  | 

 آرایه ها : قسمت دوم

سلام . تو این پست میخوام یه مقدار دیگه در مورد آرایه ها توضیح بدم
قبلا گفتیم که سه نوع آرایه داریم: یک بعدی . چند بعدی و دندانه ای (Jagged )
حالا اولین نوع آرایه یعنی آرایه یک بعدی ( Singel-Dimensional Arrays ) : همونطور که گفتیم تعریف آرایه به صورت زیر هست :

int[] array = new int[5];      or
string[] stringArray = new string[6];

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

int[] array1 = new int[5] { 1, 3, 5, 7, 9 };   or
string[] weekDays = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

int[] array2 = { 1, 3, 5, 7, 9 };
string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

  میتوانید آرایه را بدون مشخص کردن محدوده آن معرفی کنید . اما در هنگام اختصاص دادن مقادیر به آرایه باید حتما از کلمه New استفاده نمایید:

int[] array3;
array3 = new int[] { 1, 3, 5, 7, 9 }; // OK
//array3 = {1, 3, 5, 7, 9}; // Error

 SomeType[] array4 = new SomeType[10];

نتیجه تعریف یک آرایه به نوع تعریف شده آرایه بستگی دارد که آیا Value type  است یا Refrence Type. به عنوان مثال در بالا اگر SomeTYpe  از نوع Value Type  باشد حاصل این عبارت آرایه ای شامل 10 نمونه از نوع SomeTYpe است. اگر از نوع  Refrence Type  باشد آرایه شامل 10 عنصر خواهد بود که هرکدام به Null ارجاع خواهند داد.

فکر کنم توضیح مختصری در مورد Value Type , Refrence Type ها بد نباشه:

سه گروه type  در #c تعریف شده : Value Type , Refrence Type , Pointer Type

متغیر هایی از نوع Value Type , اطلاعات و داده ها را ذخیره میکنند در حالیکه متغیر های از نوع Refrence مراجع به داده ها و در واقع آدرس محل داده در حافظه را ذخیره میکنند . pointer ها فقط در حالت Unsafe قابل استفاده هستند. امکان تبدیل متغیری از نوع Value  به متغیری از نوع Refrence و برگشت دوباره به Value وجود دارد ( با استفاده از Boxing & Unboxing ) اما برعکس نه!

نوع دوم آرایه ها ,  آرایه های چند بعدی هستند : ( Multidimentional Arrays )

آرایه ها میتوانند بیش از یک بعد داشته باشند مثلا:

int[,] array = new int[4, 2];
int[, ,] array1 = new int[4, 2, 3];

که اولین آرایه ,  مشخص کننده یک آرایه 2بعدی است با 4 سطر و 2 ستون و دومین آرایه یک آرایه 3 بعدی است .
میتوانید مقداردهی آرایه را در همان زما« معرفی آن انجام دهید به صورت زیر :

int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 },{ 7, 8 } };
int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; or
int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

 و مانند ارایه های یک بعدی , میتوانید آرایه را بدون مشخص کردن محدوده آن معرفی کنید . اما در هنگام اختصاص دادن مقادیر به آرایه باید حتما از کلمه New استفاده نمایید:

 int[,] array5;
array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // OK
//array5 = {{1,2}, {3,4}, {5,6}, {7,8}}; // Error

مقداردهی به یک عضو از اعضای آرایه نیز به صورت زیر است :

array5[2, 1] = 25;

توضیح آرایه های دندانه ای میمونه برای پست بعدی . موفق باشید .

+ نوشته شده در  شنبه نهم دی 1385ساعت 1:35  توسط آتاناز  | 
سلام.
میخواستم توضیح مختصری در مورد آرایه ها ، نحوه تعریف و استفاده از اونا رو تو این پست بذارم. احتمال زیاد این مطلب ادامه دار خواهد بود!!.

آرایه ، با مشخص کردن نوع عنصر ( Element )، ابعاد ( Dimension ) و حد بالا و پایین آن (Upper & Lower  ) ، تعریف میشود. این مشخصات در هر گونه تعریفی که از آرایه ارائه شود صدق میکنند. آرایه ها تنها میتوانند عناصری را در خود نگه داری کنند که از یک نوع تعریف شده باشند.
مقادیر در آرایه از نوع شیئ ( Object ) هستند. اشیاء آرایه یک مجموعه از آدرس هایی هستند که به مکان ذخیرهء مقادیر عناصر اشاره میکنند.
انواع آرایه از کلاس System.Array مشتق شده ( Inherit ). این کلاس بدون توجه به عناصر یا بعد آرایه ها ، نمایانگر آنهاست . عملیاتی که بر روی آرایه ها تعریف شده شامل موارد زیر است :
- معین کردن و تخصیص حافظه به آرایه براساس اندازه و حد پایین تعریف شده.
- شاخص گذاری ( Index ) بر آرایه برای خواندن و نوشتن مقادیر .
- محاسبه آدرس یک عنصر از یک آرایه .( Managed Pointer )
- امکان  بازیابی بعد، محدوده های بالا و پایین و تعداد مقادیر ذخیره شده در آرایه.

آرایه ها در #C ، از نوع شیئ ( Object ) هستند و مانند ++C  و  C  ، تنها محدوده آدرسهای حافظه ای نیستند. به نمونه ای از تعریف و استفاده از آرایه ها توجه کنید:

                                                                                        ; { int[] numbers = { 1, 2, 3, 4, 5  
                                                                             ; int lengthOfNumbers = numbers.Length

یا

                                                                                                        class TestArraysClass
                                                                                                                                     }
   () static void Main  
    }     
       : Declare and initialize an array //          
      [ int[ ,] theArray = new int[5, 10            
         ; (System.Console.WriteLine("The array has {0} dimensions.", theArray.Rank            
 {       
{

آرایه یک ساختار داده ای است که شامل تعدادی متغیر از یک نوع است و همانگونه که دیدید با TYPE تعریف میشود :                                                                                         ; type[] arrayName

یک آرایه دارای مشخصات زیر است :
- میتواند یکی از این سه نوع باشد :یک بعدی ، چند بعدی و دندانه ای ( Jagged ).
- مقدار اولیهء آرایه های عددی به صفر و مقدار اولیهء آرایه های مرجعی ( Refrence ) به NULL  منسوب میشوند.
- یک آرایهء دندانه ای ( Jagged ) آرایه ای از آرایه هاست و در نتیجه عناصر آن از نوع مرجعی ( Refrence ) میباشند پس مقدار اولیه آنها NULL  است.
- شاخص آرایه ها از صفر شروع میشود پس عناصر یک آرایهء n بعدی از صفر آغاز میشود تا n-1.
- عناصر آرایه از هر نوعی میتوانند باشند حتی خود آرایه ( Jagged ).
- آرایه ها از نوع مرجع هستند ( Refrence Type ) که از نوع پایه و اصلی و انتزاعی Array  مشتق شده اند و میتوان از دستور foreach برای دستیابی به عناصر آرایه استفاده کرد.

یک مثال از سه نوع تعریف آرایه :

class TestArraysClass
}
     () static void Main      
    }       
        Declare a single-dimensional array //            
      ; [int[] array1 = new int[5            

          Declare and set array element values //            
     ; {  int[] array2 = new int[] { 1, 3, 5, 7, 9             

 Alternative syntax //            
      ; { int[] array3 = { 1, 2, 3, 4, 5, 6             

 Declare a two dimensional array //             
      ; [ int[,] multiDimensionalArray1 = new int[2, 3              

  Declare and set array element values //              
       ; {{ int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6              

 Declare a jagged array //              
       ; [][int[][] jaggedArray = new int[6              

 Set the values of the first array in the jagged array structure //              
      ; { jaggedArray[0] = new int[4] { 1, 2, 3, 4             
{        
{

امیدوارم مفید بوده باشه. این توضیح مختصری بود از آرایه ها و تعریف اونها در #C .
در فرصتهای بعدی ، در مورد آرایه ها توضیح بیشتری میدم.
موفق باشید.

+ نوشته شده در  دوشنبه بیست و هفتم آذر 1385ساعت 21:20  توسط آتاناز  | 
سلام

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

براساس سوال یکی از دوستان مبنی بر چگونگی تعریف متغیری که در تمام فرمها قابل استفاده باشد، میخواهم در مورد کلاسها و اعضای static توضیح مختصری بدم:

یک کلاس از نوع static که بصورت نمونه زیر تعریف میشود ، خواص زیر را داراست:

                                                                                           public static class CompanyInfo

                                                                                                                                     }

                                                                             ;  public static string CompanyName

                                                                           ; public static string CompanyAddress

                                                                                                                                    {

امکان گرفتن و ایجاد نمونه (Instance) از این نوع کلاس وجود ندارد.

اعضای آن تنها میتوانند از نوع static باشند.

این کلاسها sealed هستند و در نتیجه امکان وراثت و inheritance از آنها و برای آنها وجود ندارد .

نمیتوانند constructor  داشته باشند ، مگر یک static constructor برای تعیین و انتصاب مقادیر اولیه .

برای ساماندهی متدهایی که با object های خاصی کار نمیکنند (مثلا متدهای کلاس Math در Sysytem namespace) میتوانید یک کلاس از این نوع ایجاد کنید با متدها و متغیرهایی از همین نوع و بدون الزام در ساختن و گرفتن object از آن کلاس ، از متدها و متغیرهای موجود در آن بطور مستقیم و با بکار بردن نام کلاس ، استفاده کنید . به مثال زیر توجه کنید :

                                                                                                       public class Automobile
                                                                                                                                     }
                                                                         ; public static int NumberOfWheels = 4
                                                                                     public static int SizeOfGasTank
                                                                                                                               }
                                                                                                                         get
                                                                                                                      }                 

                                                                                                    ; return 15
                                                                                                                      {
                                                                                                                               {
                                                                                          {} ()public static void Drive
                                                                 ; public static event EventType RunOutOfGas

                                                                                                                                     {

و برای دسترسی به اعضا و متدها :

                                                                                                          ;()Automobile.Drive
                                                                                 ;int i = Automobile.NumberOfWheels

شما در یک کلاس غیر static هم میتوانید متد ،property , field یا event هایی از این نوع تعریف کنید و بدون تعریف یک instance از آن کلاس به اعضای static آن دسترسی داشته باشد . اگرچه حتی اگر instance ای هم از کلاس بسازید ، توسط آن نمیتوانید به این اعضا دسترسی پیدا کنید.

یک مثال دیگر :

                                                                                                           public class MyBaseC
                                                                                                                                      }
                                                                                                  public struct MyStruct
                                                                                                                          }
                                                                                 ; public static int x = 100
                                                                                                                          {
                                                                                                                                     {

                                                                                                          MyBaseC.MyStruct.x

امیدوارم مفید بوده باشه و دوست عزیزم "ستاره" هم جواب سوالشون رو گرفته باشند . این توضیح مختصری بود در مورد تعریف و استفاده از static .

+ نوشته شده در  جمعه دهم آذر 1385ساعت 19:40  توسط آتاناز  |