آموزش سیشارپ C# – بخش ۳۲
- مقدمه
شاید کمتر برنامهای را پیدا کنید که گزینههای انتخابیای را برای کاربر جهت اعلام یکسری تنظیمات و یا انتخاب یک (یا چند) گزینه از میان چند گزینه را دراختیار قرار ندهد. اصولاً این دو مورد را توسط دو ابزار Checkbox و Radio Button پیاده سازی میکنند.
- استفاده از ابزارهای Checkbox و Radio Button
دو ابزار Checkbox و Radio Button هر دوی آنها قابلیت ارائه قابلیت انتخاب چند گزینه توسط کاربر را در اختیار میگذارد، اما این دو با هم یک تفاوت اساسی دارند. Checkbox ها به شما این امکان را میدهند که بگذارید کاربر شما از بین چند گزینه مختلف، چندین گزینه را همزمان با هم انتخاب کنید، ولی در Radio Button، کاربر میتواند تنها یک گزینه از میان چند گزینهی مختلف را انتخاب کند. اینکه کدامیک را در پروژههای خود استفاده کنید، بستگی به نوع گزینههای ارائه شده توسط شما به کاربر دارد.
یک پروژه جدیدی را ایجاد کنید؛ فرم خود را کمی بزرگ و زیبا طراحی کنید. چونکه دو ابزار Checkbox و Radio Button ابزارهای کوچک و با تعداد بالا هستند، برای ایجاد راحتی در جابجایی و کدنویسی، آنها را در GroupBox قرار میدهیم. درنهایت شما میتوانید وقتی که خود GroupBox را تکان دهید، تمامی ابزارهای موجود در آن تکان بخورند.
در جعبه ابزار خود (Toolbox) بهدنبال شیء GroupBox بگردید:
یک Groupbox در فرم خود قرار دهید. در پنجره Properties آن، مشخصه Text را پیدا کرده و نام آن را بهشکل زیر قرار دهید:
Text: What Type of Movies Do You Like?
یک GroupBox دیگر نیز در کنار آن قرار دهید و اینبار مشخصه Text آن را بهشکل زیر قرار دهید:
Text: And Your Favorite Is?
درنهایت، فرم شما بهشکل زیر خواهد بود:
ما در GroupBox اولی، چند Checkbox قرار خواهیم داد و در دومی، چند Radio Button. در Toolbox شیء CheckBox را پیدا کنید و آن را بهشکل یر قرار دهید:
توسط مشخصه Text آن، نامش را به Comedy تغییر دهید. (همانند شکل بالا)
چند Checkbox دیگر قرار دهید و سعی کنید که بهشکل زیر باشند:
حال، در Groupbox دومی، به همین روش چند گزینه از نوع Radio Button اضافه کنید و سعی کنید که بهشکل زیر باشند:
در نهایت، دو Button بهشکل زیر قرار دهید و فرم را تکمیل کنید:
یک بار برنامه خود را اجرا کنید؛ خواهید دید که هرچند تعدادی که میخواهید میتوانید Checkbox انتخاب کنید؛ اما برای Radio Button فقط یک گزینه!
اجرای برنامه را متوقف کنید و دوباره به کار برگردید! کاری که الان انجام خواهیم داد، میخواهیم کدی بنویسیم که ببینیم کاربر کدام گزینه را انتخاب کرده است؛ ابتدا با Checkbox ها شروع خواهیم کرد.
بر روی Button با نام Selected Movies دابل-کلیک کنید. توسط کدی که ما خواهیم نوشت، خواهیم توانست که به Property (مشخصه) Checked از Checkbox ها دسترسی پیدا کنیم. درواقع بررسی میکنیم که آیا برای مثال، Checkbox اولی انتخاب شده است؛ یا خیر! در نهایت نیز دو حالت بیشتر وجود نخواهد داشت؛ یا True است و یا False.
ما میتوانیم توسط دستور IF، شرط فوق را بررسی کنیم. تنها لازم است که True بودن شرط را بررسی کنیم:
if (checkBox1.Checked)
{
//Some codes
}
برای مثال، ما میتوانیم درصورت صحیح بودن شرط فوق، لیست گزینههای انتخابی را با یک Message Box نمایش دهیم.
string movies = “”;
if (checkBox1.Checked)
{
movies = movies + checkBox1.Text;
}
MessageBox.Show(movies);
ما در واقع در داخل شرط IF، کاری میکنیم که نام لیست فیلمهای موجود را در داخل متغیر movies ذخیره کنیم تا زمانی که بر روی Button مروبوط کلیک شود، گزینههای انتخاب شده را نمایش دهد. یک شرط دوم بهشکل زیر اضافه کنید:
string movies = “”;
if (checkBox1.Checked)
{
movies = movies + checkBox1.Text;
}
if (checkBox2.Checked)
{
movies = movies + checkBox2.Text;
}
MessageBox.Show(movies);
برنامه خود را یک بار دیگر امتحان کنید. دو Checkbox اولی را انتخاب کنید و بر روی Button کلیک کنید. پیام زیر برای شما نمایش داده خواهد شد.
خوب … ظاهراً که مشکلی ندارد؛ واقعاً هم مشکلی ندارد، اما تنها چیزی که شاید شما را آزار میدهد، عدم وجود یک فاصله میان کلمات هست. پس به کدهای خود برگردید و کدهای داخل شروط را به شکل زیر تغییر دهید:
movies = movies + checkBox1.Text + “
”;
و بهجای کدهای بالا، میتوانید بهشکل زیر عمل کنید:
movies = movies + checkBox1.Text + Environment.NewLine;
برنامه خود را اینبار اجرا کنید و دوباره کارهای قبلی را تکرار کنید.
به کدهای خود برگردید و بهشکل زیر کدهای خود را تکمیل کنید:
حال نوبت به سراغ Radio Button ها میرود. Radio Button ها نیز بهشکل فوق عمل میکنند. فقط باید بهجای IFهای بعدی، از ELSE IF استفاده کنیم. (چون Radio Buttonها فقط قابلیت انتخاب شدن یکی از آنها وجود دارد)
string ChosenMovie = “”;
if (radioButton1.Checked)
{
ChosenMovie = radioButton1.Text;
}
else if (radioButton2.Checked)
{
ChosenMovie = radioButton2.Text;
}
کدها نیز به همین ترتیب پیش میروند.
تمرین: کدهای مربوط به Radio Button را تکمیل کنید و سعی کنید همانند Checkbox ها، وقتی که بر روی Button مروبوط کلیک شد، پیغام مناسب را نشان دهد.
جهت دریافت این بخش آموزشی بهصورت یک فایل PDF، اینجا را کلیک کنید.
من تو کد ماشین حساب به مشکل خوردم
وقتی از ممیز استفاده میکنم و یکی از 4 عمل اصلی رو میزنم از برنامه خارج میشه
اینم کد
[CODE]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace mashinheasab
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1 .Text = richTextBox1 .Text + button1.Text;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button2.Text ;
}
private void button3_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button3.Text;
}
private void button4_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button4.Text;
}
private void button5_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button5.Text;
}
private void button6_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button6.Text;
}
private void button7_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button7.Text;
}
private void button8_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button8.Text;
}
private void button9_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button9.Text;
}
private void button10_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button9.Text;
}
private void button17_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
}
double total1;
double total2;
string theoperator;
private void button15_Click(object sender, EventArgs e)
{
total1 += double.Parse(richTextBox1.Text);
richTextBox1 .Clear ();
theoperator = “+”;
}
private void button16_Click(object sender, EventArgs e)
{
switch (theoperator)
{
case “+”:
total2 = total1 + double.Parse(richTextBox1.Text);
break;
case “-“:
total2 = total1 – double.Parse(richTextBox1.Text);
break;
case “*”:
total2 = total1 * double.Parse(richTextBox1.Text);
break;
case “/”:
total2=total1 / double.Parse(richTextBox1.Text);
break;
}
richTextBox1.Text = total2.ToString();
total1 = 0;
}
private void button11_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + button11.Text;
}
private void button14_Click(object sender, EventArgs e)
{
total1 += double.Parse(richTextBox1.Text);
richTextBox1.Clear();
theoperator = “-“;
}
private void button13_Click(object sender, EventArgs e)
{
total1 += double.Parse(richTextBox1.Text);
richTextBox1.Clear();
theoperator = “*”;
}
private void button12_Click(object sender, EventArgs e)
{
total1 += double.Parse(richTextBox1.Text);
richTextBox1.Clear();
theoperator = “/”;
}
}
}
[/CODE]
مشکل از کجاست؟؟
سلام دوست عزیزم،
من اینطوری متوجه نمیشم (خصوصاً که کدها و Buttonهای شما کاملاً بینام هستند)
لطف کنید کل پروژه (Solution) رو برای من ایمیل کنید.
ایمیل بنده jmosawy در سرویس Gmail میباشد.
موفق باشید!
gmail مثل اینکه مشکل داره
هرکاری کردم ارسال نشد
اگه ایمیلyahooدارید قرار بدید براتون بفرستم
سلام دوست عزیز،
ایمیل مقصد هیچ موقع نمیتونه مشکل ساز باشه؛ همیشه ایمیل مبدا هست که ایجاد مشکل میکنه. احتمالاً مشکلی هم که برای شما داره ایجاد میشه، مشکل وجود یک فایل اجرایی در پروژه هست. شما میتونید بهجای اینکه فایل رو Zip کنید، فایل رو بهصورت RAR دربیارید تا اینکه GMail نتونه محتوای فایل رو بخونه و تشخیص بده که یک فایل exe وجود داره!
موفق باشید دوست عزیزم.
شما از لینک زیر برنامه رو دانلود کن:
http://dl.forumit-pc.ir/Ali/soft/mashinheasab.rar
دوست عزیز جواب منو ندادید؟؟
سلام دوست عزیزم،
برنامه شما پیش من مشکلی ندارد. من چندبار میان اعدادم از ممیز استفاده کردم و همراه با آن عملیات ضرب و جمع را انجام دادم؛ مشکلی مشاهده نشد. لطفاً بیشتر توضیح دهید.
موفق باشید.
اقا دستتون درد نکنه فقط اگه بشه همزان فایل پی دی افشم بزارین میشه نور الانور
موفق باشید
سلام دوست عزیز،
بله؛ چشم! من چند مدتی توی این بخشهای آموزشی چونکه یکسری مشکلات برای من بوجود اومد، نمیتونستم همزمان PDF رو قرار بدم. از این به بعد سعیام را خواهم کرد!
موفق باشید!
تشکر
سلام
اول از این که آموزشارو گذاشتی ممنون
دوم اینکه من تازه واحد c++ رو تو دانشگاه تموم کردم در حد همون کنسول اپلیکیشن حالا میخوام برنامه نویسی رو ادامه بدم به نظر شما c++ رو ادامه بدم یعنی win32 & mfc رو یا برم سراغ c#
برای ادامه کدوم بهتره . کاربردی تر و پول ساز تره برای تو بازار میگم مثل این برنامه های حسابداری و ….
لطفا کمکم کنید ممنون
سلام دوست عزیز،
اولاً خدمت شما عرض کنم که یادگیری دو زبان سی، سیپلاسپلاس و سیشارپ تقریباً مشابه هم هستند؛ اگرچه زبان سیشارپ از بقیه شاید سادهتر باشد.
پروژههایی که در بازار میخواهند مثل برنامههای حسابداری، مدیریت زمان و … معمولاً با زبان سیشارپ نوشته میشوند. حتی برنامههای بزرگ نیز قابلیت پیادهسازی با سیشارپ را نیز دارا میباشد.
از لحاظ درآمد معمولاً زبانهایی مثل C/C++ وضعیت بهتری دارند، چرا که کمتر کسی وجود دارند که به زبانهای C++ مسلط باشند. درضمن دقت کنید که زبانهایی مثل سیپلاسپلاس قابلیت اجرا شدن بر روی سیستمعاملهای مختلف را دارا میباشد، درحالی که زبان سیشارپ اصولاً بر روی ویندوز اجرا میشود.
سوالی بود در خدمت شما هستم.
موفق باشید.
سید بعضی از پارت ها مثل 16 و 19 نیست یه کاری بکن دمت گرم
سلام دوست عزیزم،
چرا دوست عزیز همه بخشها بهترتیب قرار گرفته و همه روی سایت گویاآیتی هست. از منوی بالا به بخش آموزش زبانهای برنامهنویسی مراجعه کنید و تمامی بخشها را خواهید دید.
اگر هنوز با نمایش بخشهای مختلف آموزشی مشکلی دارید، لطفاً مرا باخبر سازید.
موفق باشید!
سلام مجدد
آقا خیلی زود جواب دادید ممنون
سوال دیگه اینکه اگه با c# شروع کنم که نیازی به c++ که ندارم یعنی به هم وابسته نیستند و بعد اینکه به نظر خودت c# رو بخونم یا جاوا رو کدوم تو ایران و در کل بهتره
بازم ممنون کمک خیلی بزرگی کردید.
سلام دوست عزیزم،
هیچ وابستگیای میان C# و C++ نیست. هر کدوم رو جدا میتونید یاد بگیرید، اگرچه اگر یکی رو یاد بگیرید، تقریباً دومی رو هم یادگرفتید و فکر نمیکنم بیشتر از ۲ هفته زمان ببره که دیگری رو یاد بگیرید.
توی ایران و کلاً جهان بستگی به کاربرد از زبانهای مختلف استفاده میشه. اما گستردگی زبان Java خیلی بیشتر از C# هست. البته برنامههایی در حد همون برنامههای حسابداری یا دفترچه تلفن یا مدیریت فروشگاه رو با C# مینویسند. اما Java نقطه مثبتی که دارد، قابلیت اجرا شدن بر روی هر نوع پلتفرم و دستگاهی را دارد. حتی همان نمایشگرهای دیجیتال بیشتر یخچالها نیز با زبان Java نوشته شده است!
انتخاب آخر بستگی به شما دارد.
موفق باشید
سلام
واقعا ممنون با راهنمایتون کارمو یه چند ماهی جلو انداختین
ببخشید که زیاد سوال میکنم
درمورد C# و جاوا من با چند تا از همکلاسی ها میخوایم یه گروه راه بندازیم برنامه بنویسیم نظر شما رو کدومشونه کدام بازارش بهتره بعدا میتونیم به اون یکی سوئیچ کنیم
دوست عزیز اگه اینجا این سوالارو میپرسم به این خاطره که نه تو دانشگاه نه جایی دیگه ما تازه کارهارو راهنمایی نمیکنن ما هم مجبوریم به هر گیاهی که رسید چنگ بزنیم
خوش باشی
سلام دوست عزیزم،
شما سه زبان سیپلاسپلاس، سیشارپ و جاوا رو در نظر بگیرید؛ زبان سیشارپ که توسط مایکروسافت ایجاد شد، دقیقاً و دقیقاً حاصل اشتراک دو زبان سیپلاسپلاس و جاوا میباشد. یعنی تنها ویژگیهای مشترک دو زبان، در زبان سیشارپ وجود دارد، ولی اگر یک ویژگیای تنها در یکی از آنها وجود داشته باشد، در زبان سیشارپ آن را نخواهید یافت. برای مثال، دو زبان سیپلاسپلاس و جاوا، زبانهای شیء گرا هستند در نتیجه، سیشارپ نیز یک زبان شیء گرا است. مثال دیگر، در زبان جاوا باید تمامی کدها در کلاس نوشته شود و کدی نیست که خارج از یک کلاس باشد، اما این ویژگی در زبان سیپلاسپلاس وجود ندارد، لذا در زبان سیشارپ نیز این ویژگی تعبیه شده که بتوانید یا در کلاس یا خارج از کلاس کد بنویسید.
هر دو زبان به کار شما در بازار میآید، اما سفارشاتی که از شما معمولاً خواسته میشود، بیشتر آنها با زبانی مثل سیشارپ بسیار راحتتر قابل ایجاد است.
دوست عزیزم، زیاد دغدغه انتخاب زبان نداشته باش! چونکه اگر بخواهید اینطور فکر کنید، بدانید که هر روز پسرفت خواهید داشت. شما یکی از زبانها را انتخاب کن و مثلاً برای آن یک ماه وقت بگذار. تنها یادگیری اولین زبان برنامهنویسی مشکل هست (که اونقدرها هم مشکل نیست!). وقتی اولین زبان را فرا گرفتید، زبانهای بعدی را حداکثر در ۲ هفته (که ۱۰۰٪ کمتر هم خواهد بود) بهطور کامل فراخواهید گرفت.
موفق باشید!
سلام
اميدوارم كه همه شما سروران شريف و ارجمند در كمال صحت و سربلندي و عزت باشيد
مي خواستم بدونم براي شروع كردن برنامه نويسي با Java بايد چه برنامه اي نصب شود
مثلا” براي سي شارپ بايد ويژوال استوديو نصب باشد و زبان سي شارپ را انتخاب كني
اگر بزرگواري كنيد و قدم به قدم توضيح بدهيد خيلي ممنون مي شوم
موفق و مويد باشيد
سلام محمد جان .
بهتره که از Eclipse استفاده کنی .
سایت Nardebaan.ir که وابسته به سایت نارنجی هست ، آموزش برنامه نویسی جاوا رو شروع کرده . با مراجعه به نردبان میتونید از آموزش هاشون استفاده کنید .
موفق باشید ……
سلام رفيق
رفتم توي سايتي كه فرموده بوديد اما متاسفانه وقتي ثبت نام مي كني مي گه كه كد كاربري به ايميلتان پست نشد ده بار امتحان كردم همين پيغام رو مي داد
سلام محمد عزیز .
البته نیازی به ثبت نام نیست . می تونید با مراجعه به سایت مطالب رو بخونید . همچنین اگر نگران از دست دادن مطالب هستید ، میتونید از فید سایت استفاده کنید .
موفق باشید ……
سلام
یه سوال که شاید خیلی هم به برنامه نویسی ربط نداشته باشه !
توی پروژه هایی که کار کردیم، یه مسیر پیش فرض برای Open file dialog تعیین میکردیم!
توی برنامه هایی مث ورد و… هم یه Open file dialog پیش فرض وجود داره که همون My Documents هستش! آیا میشه این مسیر پیشفرضو عوض کرد؟!
باتشکر
سلام دوست عزیزم،
من یک جای سوالتون رو متوجه نشدم؛ منظورتون این هست که آیا اون مسیر پیشفرض رو هنگام برنامهنویسی برای یک Open File Dialog عوض کنیم و یا اینکه توی برنامههایی مثل ورد که خودشون یک Open File Dialog دارند، مسیر پیشفرض رو داخل برنامه عوض کنیم؟
موفق باشید!
منظورم همون مسیر پیش فرض برنامه ی ورد و… هستش که خود شرکت براش تعریف کرده!
سلام دوست عزیزم،
من تا حالا سراغ این مسئله نرفتم، اما بعید بدونم بشه تغییر داد؛ شاید هم شد! یک ایمیل به من با این موضوع برام ارسال کنید در زمان مناسب سراغ این مسئله رو میگیرم و جوابش رو بهتون اعلام میکنم (اگر نتیجه مثبت باشه.)
ایمیلم: jmosawy در Gmail
موفق باشید.
سلام آقای جعفری
واقعا ممنونم که تجربیاتتون رو در اختیارم گذاشتید
خوش باشی
سلام دوست عزیزم،
خوشحالم که از مطالب راضی هست. در ضمن من موسوی هستم.
موفق باشید!
سلام .ممنون از زحمات شما
یک سوال وقتی چند تا دکمه رادیو داریم
چه جوری یکی را بعنوان پیش فرض انتخاب کنیم که وقتی فرم بالا می آید ، ان دکمه رادیو در حالت انتخاب باشد؟ اصلا نیازی به این کار هست یا اینکه خود نرم افزار یکی را انتخاب کنید؟
سلام دوست عزیزم،
شما میتوانید با مراجعه به Properties مربوط به اون رادیو مورد نظر، مقدار Checked را به True تغییر دهید تا بهصورت پیشفرض یک مورد انتخاب شود!
موفق باشید!
بسیار ممنون. ;کاملا جواب داد
سلام میشه توضیح بدید چجوری بعد از این که کاربر عکس را در(pictureBox)لود کرد آن را ذخیره کند.(آموزش سیشارپ C# – بخش ۳۲)
سلام دوست عزیز،
این سوال خارج از بحث آموزشی ما هست، اما برای اطلاعات بیشتر به دو لینکی که برای شما میفرستم دقت کنید:
لینک ۱
لینک۲
سلام از این که وقت گذاشتید و جوابم را دادید سپاس گزارم.من لینک ها را بررسی کردم ولی چیزی دست گیرم نشد. میشه لطفا کدش را برایم میل کنید.
سلام وقتی که می خوام داخل WPF بنویسم ارور میده
ولی توی Windows Forms Application به خوبی اجرا می شه .
آیا کد نویسی توی این دو تا فرق میکنه ؟؟؟!!!! مگه دو تا شون c# تیستن .
سلام دوست عزیزم،
تکنولوژیهای Windows Form و WPF با هم متفاوت هستند و هر کدام نوع برنامه نویسی خاص خود را دارند. اینی که شما عرض میکنید درست هست که هر دو C# هست، اما خوب ASP.NET هم سیشارپ هست، اما باز هم کاملاً با بقیه متفاوت است.
موفق و مؤید باشید.
سلام . من می خوام در کدم یک قابلیت بگذارم که به ازای اون در صورت انتخاب یک radiobutton و کلیک بر روی یک button تایید برنامه از یک فروم به فرم جدید برود و قابلیت های رو اونجا در اختیار کار بر قرار بدهد( تقریبا شبیه انچه که در atm اتفاق می افتد) می خواستم ببینم این تغییر فروم ها چه شکلی کد نویسی می شوند. ممنون
سلام من میخوام با زدن یک دکمه، chechbox رو از حالت انتخاب در بیارم.(تیک اون رو بردارم)
تو button باید چی بنویسم؟؟؟
سلام, خسته نباشید…
مرسی از اینکه جواب میدید….
میخواستم با زدن یه دکمه رنگ زمینه textbox رو عوض کنم.
توی دکمه چی بنویسم؟؟؟
مثلا میخوام قرمز بشه…
من تو کد ها شرط ifرا نذاشتم ولی جواب داد ایا میشه بدون شرط ifکد را نوشت
;”” = string movies
;” movies = movies + checkBox1.Text + “\r\n
;”movies = movies + checkBox2.Text + “\r\n
; ( MessageBox.Show(movies