آموزش C#.Net

CooL i3oY

عضو جدید
سالم من یک سوال داشتم من می خام روی یک فیلد از data base که با sql server 2000 ساختم در یک متغیر قرار بدم و عملیت ریاضی انجام بدم plz help

دوست عزیز سوالتونو یکم دقیقتر مطرح میکنید!
چه عملیاتی رو میخواید انجام بدید؟
بگید تا جوابتونو بدم!
 

zeost

عضو جدید
آموزش C# تقریبا تصویری

آموزش C# تقریبا تصویری

visual stadio.net 2005 در محیط C#.net

1. ایجاد یک پروژه جدید :



بعد از انتخاب گزینه ی project در صفحه ای که باز شد windows aplication را انتخاب می کنیم . در قسمت name نام پروژه و در قسمت location مکانی که پروژه در آن ذخیره می شود را بنویسید.


تعریف متغیرها در C# :
روی form دابل کلیک کنید.



برای تعریف متغیرها در سی شارپ ابتدا باید نوع آن متغیر را مشخص کنیم.بعد از آن نام متغیر را مشخص می کنیم.
انواع داده ها در سی شارپ عبارتند از :object -string - sbyte- byte -short -ushort -int -uint -long -ulong -float -double -bool -char
در بعضی از متغیرها مانند int می توانیم همون جا با گذاشتن علامت مساوی مقدار اولیه بدیم و ; بگذاریم. اگر چندین متغیر از یک نوع داشتیم با گذاشتن علامت , انواع مختلفی را تعریف کنیم. برای مقدار دهی به متغیرهای کاراکتری از علامت " استفاده می کنیم.
فرض کنید از متغیر string استفاده کرده ایم و می خواهیم مقدار آن را نمایش دهیم.


از دستور messageBox استفاده میکنیم. برنامه را اجرا میکنیم.



اخطارهایی که در صفحه مشاهده می کنید به دلیل این است که یک سری متغیر تعریف کرده ایم ولی هیچ استفاده ای از آن ها نکردیم.
 

CooL i3oY

عضو جدید
دوستان من یه خواهشی ازتون دارم!
با تجربه ای که این حقیر داره، آموزش #C به اینصورت که دوستان زحمت می کشن و به این صورت این مطالبو که خیلی مقدماتی و جزئی هستن تو اینجا میزارن، پیشرفت زیادی حاصل نمیشه!
هرکس که میخواد #C یاد بگیره این کتابی که براتون میزارم دانلود کنه و بخونه:
http://dl.softgozar.com/Files/Ebook/LearnVisualCsharpFarsi_softgozar.com.exe
حجمش 9MB هست!
این کتاب کلیه ی مطالبی که دوستان تو این تاپیک قرار دادن و یا میخوان قرار بدنو پوشش میده!
خواهش من اینه که تو این تاپیک سعی کنیم مطالب حرفه ای تر و یا کاربردی تری بزاریم!
 

mohammad272005

عضو جدید
Extension Method:
در اصطلاح به متدي در يك كلاس با شرايط خاص گفته ميشه كه باعث گسترش يه كلاس ديگه بشه.
پيشنياز: dotNet 3.5
مثال:

براي ايجاد يك Extensions Method، نياز به يه كلاسه كه شرايط زير رو داشته ياشه:
1- static ياشه (مسلما memberهاش هم static ميشن)​
کد:
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]namespace[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3] Library.Helpers.Console[/SIZE]
[SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]public [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]static [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]class [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#2b91af][SIZE=3][COLOR=#2b91af]Helper[/COLOR][/SIZE]
 [/COLOR][/SIZE]{...}
}

2- متد مورد نظر public و static باشه.​

کد:
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]namespace[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3] Library.Helpers.Console[/SIZE]
[SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#0000ff][COLOR=#0000ff]public [/COLOR][/COLOR][COLOR=#0000ff][COLOR=#0000ff]static [/COLOR][/COLOR][COLOR=#0000ff][COLOR=#0000ff]class [/COLOR][/COLOR][/SIZE][COLOR=#2b91af][SIZE=3][COLOR=#2b91af]Helper[/COLOR][/SIZE]
[/COLOR][SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]public[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3] WriteAndPause(...[/SIZE]
[SIZE=3]}[/SIZE]
}
4-كلاسي كه قراره extend بشه به عنوان اولين پارامتر ورودي متد قرار بگيره.
5- اولين پارامتر متد، با كلمه كليدي this شروع بشه
کد:
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]namespace[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3] Library.Helpers.Console[/SIZE]
[SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#0000ff][COLOR=#0000ff]public [/COLOR][/COLOR][COLOR=#0000ff][COLOR=#0000ff]static [/COLOR][/COLOR][COLOR=#0000ff][COLOR=#0000ff]class [/COLOR][/COLOR][/SIZE][COLOR=#2b91af][SIZE=3][COLOR=#2b91af]Helper[/COLOR][/SIZE]
[/COLOR][SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]public[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]static[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#000000] WriteAndPause([/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]this[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#0000ff][SIZE=3][COLOR=#0000ff]object[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3][COLOR=#000000] obj)[/COLOR][/SIZE]
[SIZE=3]{[/SIZE]
[SIZE=3][COLOR=#2b91af][SIZE=3][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3].WriteLine(obj);[/SIZE]
[SIZE=3][COLOR=#2b91af][SIZE=3][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3].ReadKey();[/SIZE]
[SIZE=3]}[/SIZE]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=3]}[/SIZE]
}
6- namespace كلاس extension در ليست usingهاي فايل قرار بگيره.
تمام.
extensions methodما آماده براي استفادست.
سوالي باشه من در خدمتم.:gol:
 

R-Quantum

عضو جدید
کاربر ممتاز
با سلام و خسته نباشید خدمت شما مهندسین گل مشرق زمینی . خوب بحث امروز ما یه بحث جالبی در مورد چگونگی استفاده از تاریخ و زمان در سی شارپ میباشد. خوب یه پروژه ی جدیدی بنام Date Demo درست کنید. به فرمتون یک کنترل button اضافه کنید. خاصیت Name و Text اون رو به ترتیب به btnDate و Show Date تغییر بدهید. حال بروی کنترل دوبار کلیک کنید و کد زیر را بین {} وارد کنید:
// Declare variable
DateTime dteDate;
// Get the current date and time
dteDate = DateTime.Now;
// Display the results
MessageBox.Show(dteDate.ToString(), "Date Demo");
برنامه را اجرا کنید . همان طور که مشاهده میکنید ، کادر پیغامی ظاهر میشه و حاوی تاریخ . ساعت جاری طبق تنظیمات کامپیوتر شما میباشد.
این برنامه حاوی چند نکته میباشد که بنده در پایین به اطلاعتون میرسونم :
1. نوع داده ای Date Time میتواند یک مقدارکه معرف تاریخ و زمان خاص است را در خود نگهداری کند.
2. ToString() هم متغییر را به رشته تبدیل میکند.

قالب بندی تاریخ ها:

یکبار دیگه روی کنترل برنامه قبلی دوبار کلیک کنید و حال کد زیر را به کد قبلی اضافه کنید:
// Display dates
MessageBox.Show(dteDate.ToLongDateString(),
"Date Demo");
MessageBox.Show(dteDate.ToShortDateString(),
"Date Demo");
// Display times
MessageBox.Show(dteDate.ToLongTimeString(),
"Date Demo");
MessageBox.Show(dteDate.ToShortTimeString(),
"Date Demo");
با اجرای برنامه شما 5 کادر پیغام را مشاهده میکنید که کادر پیغام اول تاریخ و زمان را طبق تنظیمات کامپیوتر شما ، کادر پیغام دوم تاریخ رو بصورت کامل ، کادر پیغام سوم تاریخ رو بصورت خلاصه ، کادر پیغام چهارم زمان رو بصورت کامل و بالاخره کادر پیغام پنجم زمان رو بصورت خلاصه نمایش میدهند. (خسته شدم ، همش گفتم این کادر پیغام ، اون کادر پیغام . )

خاصیت Date Time:

یک کنترل button دیگه ای به فرم قبلی اضافه کنید. خاصیت Name و Text اون رو بترتیب به btnDateProperties و Date Properties تغییر دهید. حال روی کنترل جدید دوبار کلیک کنید و کد زیر را وارد کنید:
// Declare variable
DateTime dteDate;
// Get the current date and time
dteDate = DateTime.Now;
// Display the various properties
MessageBox.Show("Month: " + dteDate.Month,
"Date Demo");
MessageBox.Show("Day: " + dteDate.Day, "Date Demo");
MessageBox.Show("Year: " + dteDate.Year,
"Date Demo");
MessageBox.Show("Hour: " + dteDate.Hour,
"Date Demo");
MessageBox.Show("Minute: " + dteDate.Minute,
"Date Demo");
MessageBox.Show("Second: " + dteDate.Second,
"Date Demo");
MessageBox.Show("Day of week: " + dteDate.DayOfWeek,
"Date Demo");
MessageBox.Show("Day of year: " + dteDate.DayOfYear,
"Date Demo");
خودتون با اجرای برنامه نتیجه رو مشاهده کنید.

کار با یه سری تاریخ های خاص:

به فرم قبلی یک کنترل button دیگه ای اضافه کنید و خاصیت Name وText اون رو بترتیب به btnDateManipulation وDate Manipulation تغییر دهید . با دوبار کلیک روی کنترل جدید کد زیر را وارد کنید:
// Declare variables
DateTime dteStartDate;
DateTime dteChangedDate;
// Start off in 2400
dteStartDate = new DateTime(2009,10,04);
// Add a day and display the results
dteChangedDate = dteStartDate.AddDays(1);
MessageBox.Show(dteChangedDate.ToLongDateString(),
"Date Demo");
// Add some months and display the results
dteChangedDate = dteStartDate.AddMonths(6);
MessageBox.Show(dteChangedDate.ToLongDateString(),
"Date Demo");
// Subtract a year and display the results
dteChangedDate = dteStartDate.AddYears(-1);
MessageBox.Show(dteChangedDate.ToLongDateString(),
"Date Demo");
نتیجه رو با اجرای برنامه مشاهده کنید.
خودتون میتونید با یه تغییر کوچولو تو الگوریتم بالا پیغام های مشاهده شده در داخل کادرها رو به قول خودمون mp3 کنید.
 

R-Quantum

عضو جدید
کاربر ممتاز
خسته نباشید

خسته نباشید

خوب دانش پژوهان گل بحث این جلسه و چند جلسه بعدی ما در مورد حلقه هاست . خوب همونطور که از قبل میدونید کاربرد حلقه ها برای شمارش متوالی بکار میره مثلا" ما میخواهیم اعداد زوج بین 1تا 10 را بشماریم ووقتی به 10 رسید ،کار شمردن رو پایان بدیم ."خوب اگه بخواهیم بدون الگوریتم کار کنیم ، خیلی سریع جواب رو میگیم (2،4،6،8) درسته؟ ولی کار ما الگوریتمی هستش ، پس برای این کار از حلقه ها استفاده میکنیم . همون طور که خودتون بهتر میدونید دسنورات حلقه های ما,Switch If ,If…else,For ,While, Do…While هست و اگه تا وسط های راه نگاه های قشنگ شما همراهیم کنه ، با یه دستور دیگه ای بنام Foreach میخوایم اشنا شیم .
بحثمون رو با دستور If شروع میکنیم:
با یه مثال ساده آغاز میکنیم:
یه فرمی درست کنید(جزئیات رو توضیح نمیدم ، راه افتادیم دیگه ، مگه نه؟;))یک کنترل button اضافه کنیدو خاصیت name و text آنرا بترتیب btnIf و If تغییر دهید و با دوبار کلیک روی کنترل کد زیر را وارد کنید:
private void btnIf_Click(object sender, EventArgs e)
{
// Declare and set a variable
int intNumber = 27;
// Here's where you make a desicion
// and tell the user what happend
if (intNumber == 27)
{
MessageBox.Show("'intNumber' is, indeed, 27!",
"Simple If");
}
{
برنامه رو اجرا کنید.
خودتون میتونید با دستورات متفاوت "مثلا برابری ، نابرابری، بزرگتر ، کوچکتروحتی حالتهای همراه مساویش " نتیجه های متفاوتی را مشاهده کنید. همانطور که میدونید یار صمیمی If دستور else است . در کد بعدی متوجه این دستور میشید.
خوب به فرم قبلی یه buttonویک textbox اضافه کنید و خاصیت name و text کنترل button را بترتیب به btnCotrol وControl تغییر دهید وخاصیت name جعبه متنی رو به txtValue تغییر دهید. کدزیر را با دوبار کلیک روی کنترل button وارد کنید:
// Is intNumber less than or equal to 27?
if (intNumber <= 27)
MessageBox.Show("Is ‘intNumber’ less than or" +
"equal to 27? Yes!", "If Demo");
else
MessageBox.Show("Is ‘intNumber’ less than or" +
"equal to 27? No!", "If Demo");
// Is intNumber greater than 27?
if (intNumber > 27 )
MessageBox.Show("Is ‘intNumber’ greater than" +
"27? Yes!", "If Demo");
else
MessageBox.Show("Is ‘intNumber’ greater than" +
"27? No!", "If Demo");
// Is intNumber greater than or equal to 27?

if( intNumber >= 27)

MessageBox.Show("Is ‘intNumber’ greater than" +
"or equal to 27? Yes!", "If
Demo");
else
MessageBox.Show("Is ‘intNumber’ greater than" +
"or equal to 27? No!", "If Demo");
{
حال برنامه را اجرا کنید. داخل textbox عددی را وارد کنید و نتیجه را مشاهده کنید.
حتی میتونید در شرط هاتون از دستورات or و and منطقی هم استفاده کنیدو هیچ محدودیتی درتعداد دستورات نوشته شده داخل پرانتز وجود ندارد . این گفته رو خودتون در دستور زیر به عینه می بینید:
if( (intX > 10 && intX < 20) || (intX > 25 && intX < 30))
حال بحث این جلسمون رو با نکته هایی در هنگام مقایسه رشته ها توسط دستور If بپایان میرسونیم . همونطور که میدونید زبان سی شارپ casesensitive است و ما در مقایسه رشته ها باید در مورد حروف کوچک و بزرگ با احتیاط عمل کنیم . مثلا اگه کد زیر را در برنامه اجرا کنیم با خطا مواجه خواهد شد:
string strName = "winston";
if (strName == "WINSTON")
MessageBox.Show("Aha! you are Winston!");
حال برای خلاصی از این مشکل چیکار کنیم؟؟؟؟!!!!
مقایسه رشته ها بدون در نظر گرفتن نوع حرف:
خوب به همون فرم قبلیتون یه button اضافه کنید و خاصیت name و text انرا بترتیب به btnStringCompare و Compare Stringتغییر دهید. کد زیر را وارد کنید:
private void btnStringCompare_Click(object sender,
EventArgs e)
{
// Declare variable
string strName;
// Get the name
strName = txtName2.Text;
// Compare the name
if (String.Compare(strName, "JACK", True) == 0)
MessageBox.Show("Hello, Jack!",
"And Or Demo");
{
حروف اجرا کنید . خواهید دید که در هر صورت عبارت Hello,Jack نمایش داده میشود.
خوب حالا یه توضیح مختصر در مورد دستور زیر

if (String.Compare(strName, "STEPHANIE", True) == 0)

در دستور if بجای عملگر == از تابع Compare در System.String استفاده کردیم . این سه پارامتر بعنوان ورودی دریافت میکند. پارامترهای اول و دوم رشته هایی هستند که باید باهم مقایسه شوند و پارامتر سوم هم با true مقداردهی شده به تابع میگوید که نوع حرف را نادیده بگیر(اگه ما با false مقداردهی میکردیم . در این صورت نسبت به کوچک یا بزرگی حروف حساس خواهد شد).
ما در آخر دستور این تابع را با صفر مقایسه کردیم چرا چون نتیجه ای که این تابع برمیگرداند یک عدد صحیح میباشد.:gol::gol:






 

reza.so

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

CooL i3oY

عضو جدید
آخرین ویرایش:

R-Quantum

عضو جدید
کاربر ممتاز
کدهایی که اینجا نوشته میشه، میتونید خودتون تغییر بدید

کدهایی که اینجا نوشته میشه، میتونید خودتون تغییر بدید

خوب امیدوارم تا به این پله از ترقی بچه های خوبی بودید و جلسات رو گام به گام با بنده جلو اومده باشید (امیدوارم که خیلی هاتونم جلو افتاده باشید) قبل شروع بحث باید متذکر شم که کدهایی که در اینجا گذاشته میشه الزامی نیست شما خودتون میتونید با تفکر خودتون کدها رو به میل خودتون ویرایش کنید . خوب بحث این جلسه و چند جلسه بعدی همون ادامه بحثمون در مورد loops خواهد بود . در این جلسه دستورات switch رو باهم بحث میکنیم .
همون طور که خودتون میدونید گاهی اوقات پیش میاد که ما در میان چندین شرط که هرکدام در صورت درست بودن شرط یک سری دستورات خاصی رو که دارا میباشد باید انجام داد ، مواجه هستیم و اگر این الگوریتم رو باچندین if پیاده سازی کنیم ، در این صورت کمی از خوانایی برنامه کم میشود . این مشکل رو وقتی بهتر درک میکنیم که بخوایم تغییری در الگوریتم بدیم. برنامه نویسی برای حل این مشکل به ما دستورswitch رو پیشنهاد میده.(همینه که میگن هر مشکلی یه راه حلی داره). خوب برای آشنایی بیشتر با این دستور یه پروژه ای درست میکنیم تا این دستور قابلیت خودش رو بهتر به نمایش بذاره.
به فرم ایجاد شده خود یک ListBox اضافه کنید و خاصیت name اون رو به lstData وخاصیت Dock به Full و خاصیت IntegralHight انرا به False تغییر دهید.خاصیت item این کنترل را انتخاب کنید و بر روی دکمه سمت راست آن کلیک کنید ، پنجره ای بنام String Collection Editor نمایش داده خواهد شد. پنج نام را در آن وارد کنید مثلا zakaria,amir,zahra,anahita,fariba روی دکمه ok کلیک کنید تا اسامی وارد لیست بشند. حال با دوبار کلیک روی listbox کد زیر را وارد کنید:
// Declare variables
string strName;
string strFavoriteColor = "";
// Get the selected name
strName =
lstData.Items[lstData.SelectedIndex].ToString();
// Use a Switch to get the favorite color

// of the selected name

switch(strName)
{
case "Zakaria":
strFavoriteColor = "Madras Yellow";
break;
case "Amir":
strFavoriteColor = "Sea Blue";
break;
case "Zahra":
strFavoriteColor = "Morning Mist";
break;
case "Anahita":
strFavoriteColor = "Passionate Purple";
break;
case "Fariba":
strFavoriteColor = "Battleship Gray";
break;
}
// Display the favorite color of the selected name
MessageBox.Show(strName + "‘s favorite color is " +

strFavoriteColor, "Select Demo");

برنامه رو اجرا کنید. حال روی یکی از اسم ها کلیک کنید تا نتیجه را به وضوح ببینید.
یه نکته ای رو بگم که ما بعد متغیر strFavoriteColor که از نوع رشته هست ازعلامت " " استفاده کردیم علت استفاده از این علامت بخاطر نوشتن رنگ مورد علاقه بین آنهاست.
استفاده از switch با و بدون حساسیت به حروف:
دوباره string collection editor ، ازlistbox را باز کنیدو همه ی اسامی رو با حروف بزرگ بنویسیدمثلا ZAHRA . اگه برنامه رو اجرا کنید خواهید دید که نام رنگ موردنظرنمایش داده نمیشود. چرا چون اسامی ما همه با حروف بزرگ نوشته شده ، زبان سی شارپ هم که حساس وای وای. خوب برای حل این مشکل نمیتونیم از تابع String.Compare در این دستور استفاده کنیم ولی راه حل دیگه هست. دوباره روی listbox مون دوبار کلیک کنیدو کد رو به شکل زیر ویرایش بدید:
private void lstData_SelectedIndexChanged(object sender,
EventArgs e)
{
// Declare variables
string strName;
string strFavoriteColor = "";
// Get the selected name
strName =
lstData.Items[lstData.SelectedIndex].ToString();
// Use a Switch to get the favorite color
// of the selected name
switch(strName.ToLower())
{
case "zakaria":
strFavoriteColor = "Madras Yellow";
break ;
case "amir":
strFavoriteColor = "Sea Blue";
break;
case "zahra":
strFavoriteColor = "Morning Mist";
break;
case "anahita":
strFavoriteColor = "Passionate Purple";
break;
case "fariba":
strFavoriteColor = "Battleship Gray";
break;
}
// Display the favorite color of the selected name
MessageBox.Show(strName + "‘s favorite color is " +
strFavoriteColor, "Select Demo");}
حال برنامه رو اجرا کنید.( تفاوت ها رو احساس کنید)
همون طور که مشاهده کردید ما برای حل مشکلمون از تابع ToLower() استفاده کردیم و همونطور که مشاهده کردید تمامی اسامی رو با حروف کوچک نوشتیم. حتی میتونستیم از تابع ToUpper() هم استفاده کنیم ولی با این تفاوت که در صورت استفاده از این تابع باید کلیه اسامی با حروف بزرگ نوشته شود.
اگه دقت کرده باشید ما تابه اینجا از یه دستوری هیچ استفاده ای نکردیم اگه گفتید؟؟؟؟؟؟؟؟؟ آفرین ، دستور default است . این دستور بعنوان پیش فرض است. شما میتونید تو اسامی بالا یه اسم دیگه ای وارد لیست کنید و در محیط کد آخر دستورات switch دستور default را مثلا من اون رو نمیشناسم رو وارد کنید و بعد از اجرای برنامه و با انتخاب اسم جدید نتیجه رو مشاهده کنید.
 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام

بحث این جلسمون رو با مثالی ساده از حلقه های for شروع میکنیم.
یه فرم بنام loops درست کنید. یه listbox به آن اضافه کنید. خاصیت name اون رو به lstData و خاصیت IntegralHeight ان رو برابر falseتغییر دهید.حال یه کنترل button اضافه کنیدو خاصیت name ان رو به btnNewForLoop و خاصیت text ش رو به New For Loop تغییر دهید.با دوبار کلیک روی دکمه کنترل کد زیر را وارد کنید:

// Perform a loop
for (int intCount = 4; intCount < 62; intCount += 7)
{
// add the item to the list
lstData.Items.Add(intCount);{
حال برنامه رو اجرا کنید.
حلقه ها هم دارای انعطاف زیادی هستند مثلا شما میتونید حتی شمارشتون از آخر به اول باشه.
خوب حالا میخوام دستور زیبای foreach رو براتون بگم. کار اصلی این حلقه برای این است که شما یه سری اطلاعات نامحدود دارید ولی در جستجوی اطلاعات خاصی هستید ، خوب خسته کننده هست اگه بین اون همه اطلاعات دنبال اطلاع گمشده خودتون باشید . برای راحتی کار حلقه foreach از تخم مرغ شانسی جایزه دار دراومد.:biggrin: خوب کارایی این حلقه رو با یه پروژه میبینیم. به همون فرم قبلیتون یه button دیگه اضافه کنید. خاصیت name و text اون رو به ترتیب به btnForEachLoop و ForEach Loop تغییر دهید.کد زیر را در رویداد کلیک مربوط به کنترل جدید وارد کنید:
private void btnForEachLoop_Click(object sender,
EventArgs e)
{
// List each folder at the root of your C Drive
foreach (string strFolderinSystem.IO.Directory.GetDirectories("C:\\"))
{
// Add the item to the list
lstData.Items.Add(strFolder);
}
}
خوب حالا برنامه رو اجرا کنید . شما شاهد کلیه پوشه های موجود در درایو C خودتون خواهید بود.
بحثمون رو با چند نکته درمورد کد بالا به پایان میرسونم:
1.برای بدست آوردن تمام دایرکتوری های موجود در یک مسیر خاص در برنامه باید از تابع GetDirectoriesمربوط به کلاس Directoryدر فضای نام (که بعدا مفصلا باهاش اشنا میشیم)System.IO استفاده کنیم.
2. اگه دقت کرده باشید("C:\\") مااز 2تا\\ استفاده کردیم. در زبان سی شارپ کاراکتر\ بعنوان یه کاراکتر کنترلی هستش. اگه دستور بصورت ("C:\ ") بود ،کامپایلر خطا میگرفت زیرا فکر میکرد که شما انتهای رشته رو مشخص نکردید چرا چون " بعنوان پایان عبارت است نه رشته. مثلا اگه شما بخواید عبارت Hello”friend رو نمایش دهید برای اینکه " هم نمایش داده بشه چون جزی از رشته هست باید قبل" از کاراکتر کنترلی \ استفاده کنید. موفق باشید


 

R-Quantum

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

سلام ببخشید مباحث این جلسه دیر شد

با سلام . یه معذرت خواهی بابت کم کاریم بدهکارم .
خوب بحث این جلسه در مورد حلقه های while و do…while است . همانطور که میدونید فرق این دو حلقه این است که تو حلقه do …while یکبار حتما دستورات حلقه اجرا میشه و بعد شرط چک میشه ولی تو حلقه while اول شرط چک میشه و بعد دستور خوانده میشه ، امکان اینکه دستورات حلقه هم اجرا نشه ، وجود داره . خوب حالا برای حلقه do…while برنامه تولید اعداد تصادفی رو اجرا میکنیم .
به فرم ایجاد شده در جلسه پیش یه button اضافه کنید و خاصیت name و textbox ش رو به ترتیب btnDoLoop و Do Loop تغییر دهید . با دوبار کلیک روی کنترل کد زیر را وارد کنید:
private void btnDoLoop_Click(object sender, EventArgs e)
{
// Declare variable
Random objRandom = new Random();
int intRandomNumber = 0;
// Clear the list
lstData.Items.Clear();
// Process the loop until intRandomNumber = 10
do
{
// Get a random number between 0 and 24
intRandomNumber = objRandom.Next(25);
// Add the number to the list
lstData.Items.Add(intRandomNumber)
} while (intRandomNumber != 10);
}
با اجرای برنامه مشاهده خواهید کرد که اعداد تصادفی مختلفی بین 0 تا 24 ایجاد میشود ولی همین که به 10 رسید ، برنامه متوقف میشه . با زدن هر سری روی دکمه ، اعداد تصادفی متفاوتی را مشاهده خواهید کرد .
نکات کدنویسی :
همونطور که مشاهده کردید ما برای دادن مقدار اولیه به شئ از کامه کلیدی new استفاده کردیم .
برای تولید اعداد تصادفی از تابع Next در شئ objRandom استفاده کردیم که یه پارامتر ، در کد بالا عدد25 ، را میگیرد.
همین برنامه بالا رومیتونید با کمی دست کاری با حلقه های while نیز rewrite کنید.
مثالی برای حلقه های تودرتو:
به فرم قبلی یه button اضافه کنید . خاصیت name و text ش رو به ترتیب btnNestedLoop و Nested Loop تغییر دهید و کر زیر راوارد کنید:
private void btnNestedLoops_Click(object sender,
EventArgs e)
{
// Process an outer loop
for (int intLoop1 = 1; intLoop1 <= 2; intLoop1++)
{
// Process a nested (inner) loop
for (int intLoop2 = 1; intLoop2 <= 3; intLoop2++)
{
lstData.Items.Add(intLoop1 + ", "
+ intLoop2);
}
}
}
حال برنامه را اجرا کنید . خروجی شما به شکل زیر خواهد شد:
1.1
1.2
1.3
2.1
2.2
2.3
خروج زودهنگام از حلقه:
به فرم یه button قرار دهید و خاصیت name و text ش رو بترتیب به btnQuittingAForLoop وQuitting a For Loop و کد زیر را وارد کنید:
private void btnQuittingAForLoop_Click(object sender,
EventArgs e)
{
// List each folder at the root of your C Drive
foreach (string strFolder in
System.IO.Directory.GetDirectories("C:\\"))
{
// Add the item to the list
lstData.Items.Add(strFolder);
// Do you have the folder C:\Program Files?
if(String.Compare(strFolder,
"c:\\program files",true) == 0)
{
// Tell the user
MessageBox.Show("Found it, exiting the loop"
+ " now.","Loops");
// Quit the loop early
break;
}
}
}
این برنامه تمام فولدرهای C را به نحوی تغییر میدهد که با رسیدن به فولدرC:\Program Files پیغامی رو نمایش میده و از برنامه خارج میشه.
نکته: همانطور که در جلسات قبل به عرضتون رسوندم ما برای قرار دادن کاراکتر \ در رشته باید از \\ استفاده کنید. حال با تکنیک زیر لازم به استفاده از \ قبل کاراکترها نیست :
string FileName = @"C:\Test\Temp.txt";
با استفاده از @ کاراکتر\ تا آخر جزیی از رشته بحساب میاید.
گاهی اوقات هم ممکن است حلقه های ما تا بینهایت ادامه داشته باشد مثل کد زیر:
for (int intCount = 1; intCount > 0; intCount++)
{
lstData.Items.Add(intCount);
}
این حلقه ی ما تا بینهایت ادامه دارد . برای خاتمه دادن میتونید از منوی Debug گزینه Stop Debug رو انتخاب کنبد و اگه برنامتون در محیط ویندوز اجرا میشه از Task Manager(Alt+Ctrl+Delet ) استفاده کنید . در بعضی مواقع هم حلقه اونقدر از حافظه سیستم رو مصرف کرده که حتی task manager هم باز نمیشه ، در این صورت کمی صبر کنید و سپس پنجره نام برده رو باز کنید و یا کامپیوتر خود را مجددا راه اندازی کنید.
هر بار که برنامه ای را در محیط ویژوال اجرا میکنید، ابتدا ویژوال خود برنامه را در دیسک ذخیره میکند و سپس اجرا میشود تا اگر مجبور به راه اندازی مجدد شدید ، کدهای خود را از دست ندید.
موفق باشید


 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام

بحث این جلسه و جلسات بعدی در مورد ساختارهای داده ای (آرایه ها ،شمارنده ها،ثبات ها و ساختارها)بحث خواهیم کرد. خوب بحث این جلسه رو با آرایه ها شروع میکنیم.
همونطور که میدونید آرایه ها دارای خانه هایی از یک نوع هستند که مجموعه ای از obj را در کنار هم قرار میدهند. برای تعریف آرایه بصورت زیر عمل میکنیم:
string strName;
string[] strName = new string[10];
که ما میتونیم همون تو تعریف آرایه مون رو مقداردهی نیز کنیم.
برای دسترسی هم از ساختار زیر استفاده میکنیم:
MessageBox.Show(strName[2]);
خوب حالا یه فرمی درست کنید . سپس یه کنترل listbox به فرم خود اضافه کرده و خاصیت name انرا به lstFriends و خاصیت IntegralHeight به false تغییر دهید. یه کنترل button اضافه کرده و خاصیت name و text انرا بترتیب بهbtnArrayElements وArray Elements تغییر دهید . کد زیر را برای این کنترل وارد کنید:
private void btnArrayElements_Click(object sender,
EventArgs e)
{
// Declare an array
string[] strFriends = new string[5];
// Populate the array
strFriends[0] = "Zakariya";
strFriends[1] = "Amir";
strFriends[2] = "Cool";
strFriends[3] = "Zeost";
strFriends[4] = "Jumong";
// Add the first array item to the list
lstFriends.Items.Add(strFriends[0]);
}
حال برنامه رو اجرا کنید . خواهید دید که فقط نام زکریا نمایش داده خواهد شد.
برای نمایش کل عناصر از دستور foreach استفاده میکنیم.
کدزیر را در بالاترین بدنه کلاس خود وارد کنید:
public partial class Form1 : Form
{
// Declare a form level array
private string[] strFriends = new string[5];
حال بروی قسمت خالی فرم دوبار کلیک کنید تا بصورت اتوماتیک متد مربوط به load فعال شود. کد زیر را در آن قسمت وارد کنید:
private void Form1_Load(object sender, EventArgs e)
{// Populate the array
strFriends[0] = "Zakariya";
strFriends[1] = "Amir";
strFriends[2] = "Cool";
strFriends[3] = "Zeost";
strFriends[4] = "Jumong";
{
حال یه button دیگه اضافه کنید(علت اینکه ما هردفعه به کنترل جدید اضافه میکنیم فقط بخاطر اینه که ماهر دفعه تفاوتها رو مشاهده کنیم والا روی یک کنترل هم میشه همه این کارهارو انجام داد) خاصیت name و text ش رو بترتیب به btnEnumerateArrayوEnumerate Arrayتغییر دهید و کد زیر را وارد کنید:
private void btnEnumerateArray_Click(object sender,
EventArgs e)
{
// Enumerate the array
foreach (string strName in strFriends)
{
// Add the array item to the list
lstFriends.Items.Add(strName);
}
}
برنامه رو اجرا کنید تا خودتون متوجه تغییرات بشید.
حتی میتونیم آرایه رو بعنوان یه پارامتر هم به برنامه ارسال کنیم مثل برنامه زیر:
یه کنترل به فرم اضافه کنید و خاصیت name و text ش رو بترتیب به btnArraysAsParameters وArrays as Parametersتغییر دهید و کد زیر را وارد کنید:
private void btnArraysAsParameters_Click(object sender,
EventArgs e)
{
// List your friends
AddItemsToList(strFriends);
}
حال متد مربوط بهAddItemsToListدر زیر کلاس خود وارد کنید :
private void AddItemsToList(string[] arrayList)
{
// Enumerate the array
foreach (string strName in arrayList)
{
// Add the array item to the list
lstFriends.Items.Add(strName);
}
}
برنامه بالا همون نتیجه برنامه قبلی را میدهد.
برای اضافه کردن دوستان جدید به آرایه باید چیکار کنیم؟؟
یه کنترل جدید به خاصیت btnMoreArrayParameters وMore Array Parameters درست کنید و کد زیر را براش وارد کنید:
private void btnMoreArrayParameters_Click(object sender,
EventArgs e)
{
// Declare an array
string[] strMoreFriends = new string[2];
// Populate the array
strMoreFriends[0] = "mtr";
strMoreFriends[1] = "Mohammad";
// List your friends
AddItemsToList(strFriends);
AddItemsToList(strMoreFriends);
}
حال برنامه رو اجرا کنید .
1.برای مرتب سازی هم از دستور زیر استفاده میکنیم :
// Sort the array
Array.Sort(strFriends);
میتونید دستور بالا رو روی یک کنترل جدید پیاده سازی کنید .
2.برای معکوس کردن از دستور زیر استفاده کنید:
// Reverse the order –
// elements will be in descending order
Array.Reverse(strFriends);
موفق باشید
 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام

شمارنده:
قبل از آغاز بحث میخوایم بدونیم اصلا مفهوم شمارنده چی هستش ؟؟ با استفاده از شمارنده ها میتوانید نوعهای داده ای جدیدی بر اساس نوع های داده ای موجود از قبیل int,long,short,… بسازید. متغییر هایی که از این نوع داده ای جدید ایجاد میشوند، فقط میتونند مقداری رو داشته باشند که شما مشخص کردید. خوب حالا با کمک هم برنامه ای درست میکنیم که براساس ساعت ، یکی از کارهای روزانه رو انتخاب کنه.
1.آماده شدن برای رفتن به محل کار
2.رفتن به محل کار
3.در محل کار بودن
4.رفتن برای ناهار
5.برگشتن از محل کار
6.با دوستان بودن
7.آماده شدن برای خواب
8.خوابیدن
حال فرمی درست کنید و به قسمت کدنویسی فرم بروید و کد زیر را بعد از نام کلاس وارد کنید:
public partial class Form1 : Form
{
private enum DayAction
{
GettingReadyForWork = 0,
TravelingToWork,
AtWork,
AtLunch,
TravelingFromWork,
RelaxingForFriends,
GettingReadyForBed,
Asleep
};
هنگامی که یه شمارنده تعریف میکنید بهتره یه متغییری تعریف کنید که نوع داده ای آن برابر شمارنده باشه. کد زیر را همون زیر فرم وارد کنید:
// Declare variable
private DayAction CurrentState;
حال یه کنترل DateTimePicker به فرم اضافه کنید و بصورت زیر ویرایش کنید :
خاصیت name به dtpHour
خاصیت Format به Time
خاصیت Showupdownبه true
مقدار value به 00:00AM
خاصیت Size به 91،20 تغییر دهید.
حال یه label به فرم اضافه کرده و خاصیت name و text آنرا بترتیب به lblState و State Not Initialized تغییر دهید.
حال بروی فرم کلیک کنید تا رویداد load مربوط به فرم باز بشه . سپس متد زیر را وارد کنید:
private void Form1_Load(object sender, EventArgs e)
{
// Set the hour property to the current hour
this.Hour = DateTime.Now.Hour;
}
کد زیر را دوباره در قسمت کدهای درون فرم که اول بحثمون قرار دادیم ، اضافه کنید:
// Hour property
private int Hour
{
get
{
// Return the current hour displayed
return dtpHour.Value.Hour;
}set
{
// Set the date using the hour passed to this property
dtpHour.Value = new DateTime(DateTime.Now.Year,
DateTime.Now.Month, DateTime.Now.Day, value, 0, 0);
// Determine the state
if (value >= 6 && value < 7)
CurrentState = DayAction.GettingReadyForWork;
else if (value > 7 && value < 8)
CurrentState = DayAction.TravelingToWork;
else if (value >= 8 && value < 13)
CurrentState = DayAction.AtWork;
else if (value >= 13 && value < 14)
CurrentState = DayAction.AtLunch;
else if (value >= 14 && value < 17)
CurrentState = DayAction.AtWork;
else if (value >= 17 && value < 18)
CurrentState = DayAction.TravelingFromWork;
else if (value >= 18 && value < 22)
١
CurrentState = DayAction.RelaxingForFriends;
else if (value >= 22 && value < 23)
CurrentState = DayAction.GettingReadyForBed;
else
CurrentState = DayAction.Asleep;
// Set the display text
lblState.Text = "At " + value + ":00 Zakariye is " +
CurrentState;
}
حال بر روی کنترل داخل فرم دوبار کلیک کنید و متد زیر را وارد کنید:
private void dtpHour_ValueChanged(object sender,EventArgs
e)
{
// Update the hour property
this.Hour = dtpHour.Value.Hour;
}
حال برنامه را اجرا کنید.
نکاتی در مورد بعضی خطوط محیط کدنویسی:
به بلاک های get و set توجه کنید . در بلاک get لازم نیست نوع مقدار برگردانده شده توسط آن را مشخص کنیم ، زیرا این نوع هم اکنون در خود تعریف خاصیت بصورت int مشخص شده است ، پس یه مقدار صحیح رو برمیگردونه . دستورات بخش set هم زمانی اجرا میشه که بخواهیم مقدار این خاصیت رو تغییر دهیم.
برای دسترسی به مقدار کنونی ساعت سیستم ، میتونیم از خاصیت Now در کلاس DateTime استفاده کنیم .
Value هم که ساعت رو در خود نگهداری میکند.
موفق باشید
 

R-Quantum

عضو جدید
کاربر ممتاز
سوال

سوال

سلام دوستای عزیز . من یه خواهش و چند تا سوال دارم . اول سوالام رو میگم بعد خواهشم رو .
1.ما در چه برنامه هایی از بلاک get{}set{} استفاده میکنیم ؟؟
2. چه زمانی ما متدی در قسمت Load مربوط به فرم مینویسیم ؟؟
خوب حالا خواهشم :
من از دوستان عزیز که سی شارپ رو بلدند خواهش میکنم که بحث مربوط به ساختارها و لیست پیوندی رو طی چند جلسه به عهده بگیرند راستش خودم تو مفهوم این دو موضوع موندم . پس لطف کنید این مباحث رو ارایه دهید . ممنون میشم
 

CooL i3oY

عضو جدید
سلام دوستای عزیز . من یه خواهش و چند تا سوال دارم . اول سوالام رو میگم بعد خواهشم رو .
1.ما در چه برنامه هایی از بلاک get{}set{} استفاده میکنیم ؟؟
2. چه زمانی ما متدی در قسمت Load مربوط به فرم مینویسیم ؟؟
خوب حالا خواهشم :
من از دوستان عزیز که سی شارپ رو بلدند خواهش میکنم که بحث مربوط به ساختارها و لیست پیوندی رو طی چند جلسه به عهده بگیرند راستش خودم تو مفهوم این دو موضوع موندم . پس لطف کنید این مباحث رو ارایه دهید . ممنون میشم

سلام الهام جان

1. ما در چه برنامه هایی از بلاک get{}set{} استفاده میکنیم ؟؟ بلاک های Set و Get به مبحث Properties و یا همون خوصوصیات مربوط میشن. set برای استفاده از مقدار ورودی و get برای دادن یک مقدار به کار میره. اینکه از اینها در چه برنامه ای استفاده میکنیم؟ خیلی سوال کلی هستش و به نظر من قابل پاسخ نیست. ولی یک نکته ای رو می گم امیدوارم که کمکتون کنه، هر objectی که تو ویژوال وجود داره تعدادی Properties داره، مثلا TextBox.Text خوب ببینید شما هروقت که TextBox.Text رو در سمت چپ مساوی قرار بدید قسمت set فعال میشه (;"txtName.Text = "Cool i3oY) و مقدار ورودی رو میریزه تو فیلد Text ،
ولی اگه TextBox.Text رو در سمت راست مساوس بزارید قسمت get فعال میشه (;string MyName = txtName.Text) و مقدار فیلد Text رو به متغیر میده. حالا شما برای هرکدام از فیلدهای کلاستون که فکر میکنید می تونه همچین حالتی داشته باشه Property تعریف کنید.

2. چه زمانی ما متدی در قسمت Load مربوط به فرم مینویسیم ؟؟ هر زمان که بخوایم عملیاتی در زمان بارگزاری (Load) فورم اعمال بشه، مثلا:
می خواهید در ابتدای ظاهر شدن فرم اصلی صفحه ی Login بیاد یا پیغام خوشامد گویی ظاهر بشه یا کنترل های زمان اجرا ساخته بشن و ...

در مورد خواهشتونم باید بگم بنده ممکنه دیگه نتونم بیام تو این فروم چون حجم کاریمون افزایش پیدا کرده و وقت سر خاروندن رو هم نداریم!:confused:
الانم به خاطر ارادتی که به شما داشتم به سوالاتون جوالیدم:D، ولی نهایت سعی خودم رو میکنم که تو زمان استراحت کمکی هرچند کوچک بکنم!
 

R-Quantum

عضو جدید
کاربر ممتاز
بدو زنگ تفریح

بدو زنگ تفریح

سلام دوستان گلم . امیدوارم که ایام بکامتون باشه .
مسیری که میگم رو قدم به قدم طی کنید و یه سری آهنگهای گوش خراشی رو گوش بدید. این جلسه فقط زنگ تفریحی برای شما دوستان گلم هستش.
File/New/Project/Window/Console Application
خوب حالا محیط برنامه نویسی براتون باز میشه . همون تو قسمت main این کد را بین دو{} بنویسید :
Console.Beeb; (پخش صدا از بلندگو)
For(int i=1;i<6;i++);
For(int j=i;j<=6;j++);
Console.Beeb(300,1000);
Console.Beeb(1200,1000);
(زمان پخش صدا توسط فرکانس . این جملات جنبه ی توضیحی دارند)
حال برنامه رو اجرا کنید . شما شاهد یه صفحه مشکی خواهید بود و شنونده صدایی گوش خراش از بلندگو . با تغییر دادن اعداد داخل پرانتز ریتم آهنگ ها هم عوض میشه . موفق باشید
 

R-Quantum

عضو جدید
کاربر ممتاز
یا علی مدد

یا علی مدد


با سلام و خسته نباشید خدمت عزیزانی که امتحاناتشون رو تموم کردند و یه خدا قوت به عزیزان دیگه در حال امتحان دادن هستند. با آرزوی موفقیت برای هر دو گروه .
خوب بحث این جلسه ما طبق قول قبلی در مورد ساختارهاست . امیدوارم که مطالب جلسات قبل فراموش نشده باشه و هیچ نگرانی هم در مورد فراموش شدن نیست چون با یه مرور کوتاه دوباره مطالب در ذهن شما تداعی خواهد شد .
ابتدای بحث میخواهیم ببینیم که ساختار چیست ؟ یه تعریف مختصری از ساختار داشته باشیم : " تو خیلی از مواقع برنامه نویس دوست داره اطلاعاتی که نوع داده ای متفاوتی دارند ولی همگی به یک موضوع مشترک مربوط هستند را در یک گروه ذخیره کند . برای نگهداری چنین اطلاعتی میتوان از کلاس ها استفاده کرد که در آینده نه چندان دور به این موضوع هم خواهیم پرداخت ولی راه دوم استفاده از ساختارهاست . ساختارها هم کاربردی مانند کلاس ها دارند ولی ساده تر هستند. خوب کارمون رو با یک پروژه آغاز میکنیم .
ابتدای کار پنجره ای بنام .بسازید Structure Demo
حال بروی پنجره Solution Explorer بر روی نام پروژه راست کلیک کرده از منوی نمایش گزینه Add را انتخاب کرده و سپس از منوی باز شده Class… را انتخاب کنید. پنجره ای بنام
Add New Item – Structure Demo نمایش داده خواهد شد . در قسمت نام عبارت Customer را وارد کرده و سپس برروی Add کلیک کرده تا آیتم جدیدی به برنامه اضافه شود. بعد ازاینکه صفحه جدیدی که ایجاد کردید ، نمایش داده شد همه کدهای درون آنرا پاک کرده و کد زیر را وارد کنید:
public struct Customer
{
// Public members
public string FirstName;
public string LastName;
public string Email;
}
چون ما از ساختار استفاده کردیم باید بخش تعریف کلاس با ساختار جایگزین شده باشد.
حال به قسمت فرم برگردید و 4 label و4 textbox و یک button به فرم اضافه کنید . خاصیت هر یک را به صورت زیر ویرایش کنید:
خاصیت name کنترل ها :

lblName = label1

txtName = textBox1

lblFirstName = Label2

txtFirstName = textBox2

lblLastName = Label3

txtLastName = textBox3

lblEmail = Label4

txtEmail = textBox4

btnTest= Button1

خاصیت text کنترل ها :

Name = lblName

First Name = lblFirstName

Last Name = lblLastName

Email = lblEmail

Test = btnTest
تغییر دهید.

حال کد زیر را با دوبارکلیک روی کنترل button وارد کنید:
private void btnTest_Click(object sender, EventArgs e)
{
// Create a new customer
Customer objCustomer;
objCustomer.FirstName = "IT";
objCustomer.LastName = "Engineer";
objCustomer.Email = "it_engineer@yahoo.com";
// Display the customer
DisplayCustomer(objCustomer);}
حال کد زیر را در کلاس Form1 وارد کنید:

private void DisplayCustomer(Customer objCustomer)
{
// Display the customer details on the form
txtFirstName.Text = objCustomer.FirstName;
txtLastName.Text = objCustomer.LastName;
txtEmail.Text = objCustomer.Email;}
تا این جا اگه برنامه رو اجرا کنید . مشاهده خواهید کرد که کادر Name خالی است . خوب حالابحثمون رو ادامه میدیم .
ویرایشگر کد مربوط به Customer باز کنید و کد زیر را وارد کنید:
// Public members
public string FirstName;
public string LastName;
public string Email;
// Name Property
public string Name
{
get
{
return FirstName + " " + LastName;
}
}
تا یک خاصیت فقط خواندنی به ساختار اضافه شود.
حال ویرایشگر مربوط به Form1 را باز کرده و خط زیر را به بقیه خطوط اضافه کنید:
txtName.Text = objCustomer.Name; .
حال برنامه رو اجرا کنید و خواهید دید که کادرName با نام و نام خانوادگی پر خواهد شد.
شما کد برنامه رو با نام نام خانوادگی خود پر کنید .
ممنون از نگاه های قشنگتون . موفق باشید



 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام

با سلام و خسته نباشید خدمت همه شما دوستان عزیز که با نگاه های قشنگتون به من انرژی و به این مطالب بی جان نفس تازه میدید . خوب بحث این جلسه در مورد لیست پیوندی میباشد .
گاهی اوقات پیش میاد که شما اطلاعاتی از مشترکین خود دارید و قراره با اون اطلاعات کارایی از جمله ویرایش آنها یا کارهایی مثل اضافه کردن و یا حذف یک مشترک رو انجام بدید . خوب برای اینکار اگه از آرایه اضافه کنیم با دردسر های فراوانی روبرو خواهیم شد از جمله اینکه اگه بخواین یه مشترک جدید رو اضافه کنید ، اگه طول آرایه محدود باشد بله درسته ما متوجه مشکل نمیشیم ولی اگه طول آرایه زیاد باشه اون موقع متوجه مشکل خواهیم شد . این تنها یه مورد از مشکلات بود . برای حل این مشکل از لیست پیوندی در .NET که به وسیله کلاس ArrayList معرفی شدند ، میتوان براحتی طول آرایه رو کنترل کرد.
نحوه ی استفاده از لیست پیوندی :
فرمی رو که جلسه قبل برای ساختارها درست کرده بودید رو باز کنید و یک کنترل ListBox به فرم اضافه کنید و خاصیت Name آنرا lstCustomers و خاصیت IntegralHeight را False تغییر دهید.
نکته : میتوانید با فشردن کلید Ctrl+A تمام کنترل های روی فرم را انتخاب و به موقعیت جدیدشان ببرید.
حال ویرایشگر کد Form1 را باز کرده و کد زیر را به ابتدای آن اضافه کنید:
public partial class Form1 : Form
{
// Form level members
private ArrayList objCustomers = new ArrayList();
{
نکته : در تعریف کد بالا، کلاس تعریف شده جز کلاس های تعریف شده نیست پس باید در فضای نام آنرا به برنامه لضافه کرد . برای اینکار از فضای نام System.Collection بصورت زیر به بالاترین خط در قسمت کد Form1 اضافه میکنیم .
using System.Collections;
حال متد زیر را برای اضافه کردن یک مشترک جدید به برنامه اضافه کنید:

public void CreateCustomer(string FirstName,
string LastName, string Email)
{
// Declare a customer object
Customer objNewCustomer;
// Create the new customer
objNewCustomer.FirstName = FirstName;
objNewCustomer.LastName = LastName;
objNewCustomer.Email = Email;
// Add the new customer to the list
objCustomers.Add(objNewCustomer);
// Add the new customer to the ListBox control
lstCustomers.Items.Add(objNewCustomer);
}
حال متد btnTest_Click را بصورت زیر تغییر دهید:

private void btnTest_Click(object sender, EventArgs e)
{
// Create some customers
CreateCustomer("barobach", "bahal",
"bahal@somecompany.com");
CreateCustomer("soltan", "heart",
"soltane ghalbha@somecompany.com");
CreateCustomer("ezraeel", "soltane atash",
"soltane atash@somecompany.com");
}
اگه برنامه رو اجرا کنید خواهید دید که خبری از نام و نام خانوادگی مشترکین نیست . در لیست خود
Customer را میبینید که سه بار تکرار شده است . علت این است که لیست فقط مقادیر رشته رو نمایش میدهد پس باید Customer را به رشته تبدیل کنیم برای اینکار از متد ToString() استفاده میکنیم. برای اینکار ویرایشگر مربوط به Customer را باز کرده و کد زیر را وارد کنید:
/// <summary>
/// Overrides the default ToString method
/// </summary>
/// <returns>String</returns>
/// <remarks>Returns the customer name and email
address</remarks>
public override string ToString()
{
return Name + " (" + Email + ") ";
}
در مورد خطوط بالا در جلسات آینده توضیح داده خواهد شد . فعلا شما وارد کنید .
حال برنامه را اجرا کنید . تغییرات را خودتون مشاهده خواهید کرد .
شاد و پیروز باشید
 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام


سلام دوستای گلم . امیدوارم که هرکجای ایران پهناورکه هستید حالتون خوب و ایام بکامتون باشه .
خوب این جلسه ما بحث جلسه قبلی رو ادامه میدیم . جلسه قبل ما با لیست پیوندی آشنا شدیم و با انجام یک پروژه بیشتر با مبحث انس گرفتیم . حالا این جلسه میخوایم یک مشتری رو از بین مشتریامون پاک کنیم . به فرم ایجاد شده در جلسه قبل یک کنترل button قسمت پایین فرم اضافه کنید و خاصیت name o text آنرا بترتیب btnDelete وDelete تغییر دهید . در قسمت کد این کنترل کد زیر را وارد کنید:
private void btnDelete_Click(object sender, EventArgs e)
{
// If no customer is selected in the ListBox then...
if (lstCustomers.SelectedIndex == -1)
{
// Display a message
MessageBox.Show("You must select a customer to "
+ "delete!", "Structure Demo");
// Exit the method
return;
}
// Prompt the user to delete the selected customer
DialogResult result = MessageBox.Show(
"Are you sure you want to delete " +
SelectedCustomer.Name + "? ", "Structure Demo",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
// Get the customer to be deleted
Customer objCustomerToDelete = SelectedCustomer;
// Remove the customer from the ArrayList
objCustomers.Remove(objCustomerToDelete);
// Remove the customer from the ListBox
lstCustomers.Items.Remove(objCustomerToDelete);
}
}

اگه توجه کنید ما در کد بالا از خاصیت SelectedCustomer استفاده کردیم . برای اینکه این خاصیت را به فرم خود اضافه کنیم ، کد زیر را به کلاس Form1 اضافه میکنیم :
public Customer SelectedCustomer
{
get
{
// Return the selected customer
return (Customer)lstCustomers.Items[
lstCustomers.SelectedIndex];
}
}
حال برنامه رو اجرا کنید . خواهید دید که اگر نامی را برای delete کردن انتخاب کرده باشید یک کادر پیغامی باز میشود که برای حذف مشتری انتخابی از شما سوال میپرسد .
ü دوستان گلم اگر توجه کرده باشید ما در کد نویسی بالا از تابع MessageBoxButtons، MessageBoxIcon، DialogResult استفاده کردیم . ما خاصیت این توابع رو در ادامه جلسات عرض خواهیم کرد . هر کسی که مشتاق این است که جلوتر با این خصوصیت ها آشنا شود در همین تاپیک درخواست کنه ، منم اگه درخواستی بود، حتی یک نفر ، خصوصیات را در جلسه بعدی عرض میکنم .
مباحث این جلسه رو با نمایش اطلاعات مشتری در صفحه به پایان میرسونیم .
برای این کار در بخش فرم بروی لیست باکس دوبار کلیک کنیدتا متد مربوط به SelectedIndexChanged بصورت اتوماتیک نمایش داده شود . حال کد زیر را وارد کنید:
private void lstCustomers_SelectedIndexChanged(
object sender, EventArgs e)
{
// Display the customer details
DisplayCustomer(SelectedCustomer);
}
حال برنامه رو اجرا کنید و بر روی دکمه test کلیک کنید . خودتون تغییرات را مشاهده میکنید.
موفق باشید
 

R-Quantum

عضو جدید
کاربر ممتاز
سلام

سلام

سلام دوستای گلم . امیدوارم که حالتون خوب و دماغتون چاق باشه . امتحاناتتون هم که تا الان تموم شده و در تعطیلات (البته برای دانشجو فکر نکنم تعطیلات معنایی داشته باشه چون روزا برای دانشجویان عین برق یکی پس از دیگری تموم میشه ) جا داره یه خسته نباشید بگم . خوب بحث این جلسمون در مورد Hashtable میباشد . اول ببینیم مفهوم این واژه چیه ؟؟ تو آرایه ها و لیست پیوندی هر موقع که بخواهیم دنبال یه عنصری باشیم حتما باید اندیس اون رو بدونیم ولی سوال اینجاست آیا بجز اندیس هم میتوانیم با استفاده از عناصر دیگه به جستجو بپردازیم مثلا با آدرس پست الکترونیکی اشخاص ؟؟؟ آیا امکانش هست ؟؟
.
.
.
.
بله مفهوم اون واژه همینه . Hashtable روش های بهتری را برای جستجو ارائه میدهند . این کلکسیون براساس مقدار کلیدی که برای آن مشخص میکنید عمل جستجو رو انجام میده .
Hashtable نوعی کلکسیون است که هر عنصر آن دارای یک کلید هستش . با استفاده از کلید میتوانیم به مقدار عنصر موجود در کلکسیون دسترسی داشته باشیم . هنگامی که کلید و مقدار را به Hashtable اضافه کردیم ، کلید تابعی بنام System.Object.GetHashCode() را فراخوانی میکند . این تابع یک عدد صحیح منحصر به فردی را برای کلید برمیگرداند که بعنوان شناسه آن استفاده میشود . با این ترتیب اگر بخواهید به عنصری درHashtable دسترسی داشته باشید ، کلید ان عنصر از شما گرفته شده و تابع GetHashCode مربوط به آن کلید اجرا میشود . شناسه ای که بوسیله این تابع بدست میاید با تمام شناسه های موجود در Hashtable مقایسه میشود . اگر آن شناسه در لیست موجود باشد ، مقدار مرتبط با ان کلید بر میگردد .
نکته : عدد صحیحی که برای ذخیره شناسه یک کلید در Hashtable بکار میرود ، فقط 4 بایت از حافظه را اشغال میکند . بنابراین اگر رشته ای شامل 100 کاراکتر را که 200 بایت از حافظه را اشغال میکند بعنوان کلید در نظر بگیرید ، برای جستجو در جدول فقط اعداد چهار بایتی با یکدیگر مقایسه میشوند که باعث افزایش سرعت میشود.
خوب حالا ویرایشگر کد مربوط به فرم جلسه پیش رو باز کرده ، تغییر زیر را در تعریف متغیر objCustomers دهید:
// Form level members
private Hashtable objCustomers = new Hashtable();
به قسمت کدهای مربوط به تابع CreateCustomer برید و کدی که به رنگ قرمز است را به دیگر کدهای موجود اضافه کنید:
public void CreateCustomer(string FirstName, string
LastName, string Email)
{
// Declare a customer object
Customer objNewCustomer;
// Create the new customer
objNewCustomer.FirstName = FirstName;
objNewCustomer.LastName = LastName;
objNewCustomer.Email = Email;
// Add the new customer to the list
objCustomers.Add(Email.ToLower(),objNewCustomer);
// Add the new customer to the ListBox control
lstCustomers.Items.Add(objNewCustomer);
حال به قسمت کدمربوط به btnDelete_Click رفته و کد قرمز رنگ را وارد کنید :
// Prompt the user to delete the selected customer
DialogResult result = MessageBox.Show(
"Are you sure you want to delete " +
SelectedCustomer.Name + "? ", "Structure Demo",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
// Get the customer to be deleted
Customer objCustomerToDelete = SelectedCustomer;
// Remove the customer from the ArrayList
objCustomers.Remove(txtEmail.Text.ToLower());
// Remove the customer from the ListBox
lstCustomers.Items.Remove(objCustomerToDelete);
}
حال به قسمت طراحی فرم برگردید و یک کنترل Button به فرم اضافه کرده و خاصیت Name و Text آن را بترتیب btnLookup وLookup تغییر دهید . با دوبار کلیک روی این کنترل کد زیر را وارد کنید :
private void btnLookup_Click(object sender, EventArgs e)
{
// If the customer found in the Hashtable
if (objCustomers.Contains(txtEmail.Text.ToLower()) ==
true)
// Display the customer name
MessageBox.Show("The customer name is: " +
((Customer)objCustomers[txtEmail.Text.ToLower()]).Name
, "Structure Demo");
else
//Display an error
MessageBox.Show("There is no custome rwith the "
+ "email address: " + txtEmail.Text,
"Structure Demo");
}
حال برنامه را اجرا کنید .
خوش و خرم باشید.

 

محمد پرنده

عضو جدید
آموزش سی شارپ

آموزش سی شارپ

سلام.:smile: با اجازه مدیر محترم:D ، این تاپیک رو با نام خدا اختصاص میدم به آموزش سی.شارپ. امیدوارم که دوستانم بهره ی کامل از این تاپیک ببرند


سلام.:smile: با اجازه مدیر محترم:D، میخواستم زحمت این دوست عزیز را با قرار دادن لینک اصلی کمی کم کنم و دیگر دوستان را (تا قسمت بعدی و ادامه دارد)
منتظر نذارم.;)
((برای دوستانی که با فایل های Pdf راحت تر هستند و تمایل دارند که مطالب آموزشی این وبلاگ را به صورت فایل Pdf داشته باشند ، یک نسخه بروز رسانی شده از مطالب وبلاگم که حدود 105 صفحه A4 شده است ، را آماده کردم. برای دانلود این فایل می توانید از طریق لینک زیر اقدام نمائید.
http://www.tabatabaei.info/csharpsamples/CSharpTutorial.pdf
فراموش نکنید که نظرات شما ، به بهبود این مطالب کمک میکنه!
موفق باشید.
مسعود طباطبايي http://csharptuning.blogfa.com ))
 
آخرین ویرایش:

R-Quantum

عضو جدید
کاربر ممتاز
سلام از دوست عزیز کمال تشکر را دارم بابت لینکشون . از شما دوستان گلم هم ممنون که تو این مدت به حرف های من گوش کردید و با نگاه های قشنگتون من رو همراهی کردید و بهم این انرژی رو دادید تا اینجا همراهتون باشم . از کربلایی عزیز هم سپاسگذارم . امیدوارم مباحث باقی مونده رو با لینکهایی که دوستان زحمت کشیدند و در اختیار ما گداشتند و با همت خودتون پیش ببرید . شاد و پیروز باشید
 

honey.it

عضو جدید
سلام دوستان
واقعا ازتون ممنونم:):gol::gol::gol:
در مورد متدهای oledb connection,oledb command,oledb adaptor کسی چیزی میدونه؟لطفا راهنمایی ام کنید.
 

Homer.J

عضو جدید
از این متدها برایه اتصال و انجام عملیات به پایگاههای داده ای مثل Access، Oracle, ... استفاده میشه. برایه SQL Server هم می تونیم استفاده کنیم که توصیه نمیشه.
 

honey.it

عضو جدید
سلام دوستان
یه برنامه تحت وب باید بنویسم,مثل زیر باشه:
"نام,نام خانوادگی,شماره دانشجویی و رشته دانشجو را از جدول پایگاه داده بگیره؛لیست دروس رو از پایگاه داده بیاره به "لیست1".دانشجو اگه درسی از لیست انتخاب کرد با زدن"select"درس بیاد به "لیست2 “.با زدن دکمه”save”دروس اورده شده به "لیست “2تو یه جدول دیگه تو پایگاه داده ثبت بشه.با زدن “close”برنامه بسته بشه.
با زدن”change password” هم یه صفحه جدید باز بشه.
این برنامه انتخاب واحده ولی خیلی جمع و جور,تقریبا هیچی از#cنمیدونم,ولی برای این پروژه استادمون گفته به این زبان بنویسیم. این پروژه برای اساتیدی مثل شما خیلی ساده اس.جدولها هم توی accessساختم .
نمیدونم برای کد نویسیش باید چیکار کنم و چی بنویسم, این برنامه تحت وب باید نوشته بشه. لطفا کمکم کنید.
 

پیوست ها

  • untitled4.bmp
    93.6 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

mike2

عضو جدید
شما می خواید کسی این پروژه رو برایه شما بنویسه یا تو نوشتن اون به شما کمک کنه؟

اگه حالت اول هست که یه تاپیک بزنید شاید کسی براتون نوشت یا ایتکه از قبل داشت و بهتون داد.

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

honey.it

عضو جدید
شما می خواید کسی این پروژه رو برایه شما بنویسه یا تو نوشتن اون به شما کمک کنه؟

اگه حالت اول هست که یه تاپیک بزنید شاید کسی براتون نوشت یا ایتکه از قبل داشت و بهتون داد.

اگه حالت دومه که شما اول باید یه کتاب بخونید تا با مفاهیم اولیه آشنا بشید و بعد از دیدن مثالها شروع به نوشتن پروژه کنید و بعد اشکالاتی که براتون مطرح میشه رو بیاید و اینجا بپرسید تا دوستان راهنمایی کنند.
دوست عزیز من میخوام کسی راهنمایی کنه بگه مرحله به مرحله باید چیکار کنم تا این برنامه رو بنویسم.:gol:
مطالبی هم در مورد این زبان و استفاده از دستوراتش دارم که تا حدی میشه با اونا کار کرد.البته باید بگم فقط چند روزه که با #cکار میکنم؛اینجوری خودم هم یاد میگیرم؛از آماده خوری هم خوشم نمیاد که بدم کلا یکی دیگه برام بنویسه.حالا اگه دوستان لطف کنن و یه مبتدی رو راهنمایی کنن واقعا ممنون میشم.:redface:
 

Y@30N

عضو جدید
آموزش سی شارپ

آموزش سی شارپ

سلام اینم فایل آموزشی سی شارپ 2008

که خودم جمع آوریش کردم
 

پیوست ها

  • C#2.pdf
    864.5 کیلوبایت · بازدیدها: 0

hamed13712000

عضو جدید
سلام
دوستان عزیز من یک پروژه سی شارپ دارم که اگه لطف کنید تو یه سری از این بخش ها کمکم کنید ممنون میشم.
برنامه ای بنویسید که با امکان ایجاد کردن پنج ماتریس به ابعاد دلخواه و انجام عملیات مختلف بر روی این ماتریس دارای منو زیر باشد:
1- دریافت ماتریس: طول و عرض ماتریس را دریافت و سپس عناصر ماتریس را بخواند
2- چاپ ماتریس: در صورت پر شدن ماتریس آن را در خروجی چاپ کند
3- بررسی ماتریس: یکی از پنج ماتریس را انتخاب کرده و در صورت مربعی بودن : همانی بودن، اسکالر، قطری، بالا مثلثی یا پایین مثلثی بودن این ماتریس را مشخصص کند.
4- جمع ماتریس: دو شماره را به عنوان اندیس ماتریس ها دریافت کند،در صورتی که طول و عرضشان مشابه است حاصل جمع دو ماتریس را در ماتریسی با همان ابعاد ذخیره کند.
5- محاسبه: یکی از ماتریس ها را دریافت کرده سپس میانگین کل عناصر را به دست آورده و عناصر کوچکتر از میانگین را در خروجی چاپ کند.
6- ضرب دو ماتریس: در صورتی که دو ماتریس انتخاب شده قابل ضرب باشد.ضرب دو ماتریس را در ماتریسی با ابعاد مناسب ذخیره کند.
7-خروج
 
بالا