ComboBox یکی از کنترلهای پرکاربرد در برنامهنویسی سیشارپ (C#) و محیط ویندوز فرمها (Windows Forms) است که به کاربر امکان انتخاب یک گزینه از میان چندین گزینه موجود را میدهد. این کنترل ترکیبی از یک TextBox و یک ListBox است که به کاربر اجازه میدهد یا یک آیتم را از لیست کشویی انتخاب کند یا مستقیماً متن دلخواه خود را وارد نماید. در این مقاله، به بررسی عملی استفاده از ComboBox در سی شارپ میپردازیم و مراحل ایجاد، تنظیم ویژگیها، و مدیریت رویدادهای مرتبط با آن را بهطور دقیق مورد بحث قرار میدهیم تا بتوانید به راحتی این کنترل را در پروژههای خود پیادهسازی کنید.
کنترل ComboBox در سی شارپ چیست؟
ComboBox در سیشارپ (C#) یک کنترل کاربری است که در برنامهنویسی ویندوز فرمها (Windows Forms) استفاده میشود و به کاربر اجازه میدهد تا یک گزینه را از یک لیست کشویی انتخاب کند. این کنترل، که ترکیبی از یک TextBox و یک ListBox است، به کاربران این امکان را میدهد که یا از میان گزینههای موجود یکی را انتخاب کنند یا مستقیماً متن خود را وارد کنند.
کاربرد عملی ComboBox در سیشارپ به این معناست که توسعهدهندگان بتوانند به صورت پویا این کنترل را ایجاد، تنظیم و مدیریت کنند. در عمل، این شامل مراحل زیر میشود:
- ایجاد ComboBox: با استفاده از کلاس ComboBox و تعریف ویژگیهای مختلفی مانند اندازه، مکان، و آیتمهای آن.
- تنظیم ویژگیها: تغییر دادن ویژگیهایی مانند رنگ پسزمینه، فونت، و تعداد آیتمهای موجود در لیست کشویی.
- مدیریت رویدادها: کنترل رفتارهای مختلف ComboBox از طریق رویدادهایی مانند SelectedIndexChanged، که وقتی کاربر یک آیتم را انتخاب میکند، فعال میشود.
در واقع، استفاده عملی از ComboBox به توسعهدهندگان اجازه میدهد تا این کنترل را بهطور کامل مطابق با نیازهای برنامه خود شخصیسازی کنند و تعاملات کاربر را بهطور دقیق مدیریت نمایند.
آموزش کنترل ComboBox در سی شارپ به صورت عملی
در ویندوز فرمها (Windows Forms در سی شارپ)، کنترل ComboBox دو ویژگی مختلف را در یک کنترل واحد ارائه میدهد، به این معنا که ComboBox هم به عنوان TextBox و هم به عنوان ListBox عمل میکند. در ComboBox تنها یک آیتم در یک زمان نمایش داده میشود و بقیه آیتمها در منوی کشویی قرار دارند. ComboBox یک کلاس در زبان C# است و در فضای نام System.Windows.Forms تعریف شده است. شما میتوانید به دو روش مختلف یک ComboBox ایجاد کنید:
زمان طراحی (Design-Time): این سادهترین روش برای ایجاد کنترل ComboBox است. مراحل زیر را دنبال کنید:
- مرحله 1: یک فرم ویندوزی مانند تصویر زیر ایجاد کنید: Visual Studio -> File -> New -> Project -> WindowsFormApp
- مرحله 2: کنترل ComboBox را از ToolBox بکشید و روی فرم ویندوزی رها کنید. شما مجاز هستید کنترل ComboBox را در هر جایی از فرم ویندوزی مطابق نیاز خود قرار دهید.
- مرحله 3: پس از کشیدن و رها کردن، به بخش ویژگیهای کنترل ComboBox بروید تا ویژگیهای آن را مطابق نیاز خود تنظیم کنید.
خروجی به صورت زیر است:
زمان اجرا (Run-Time): این روش کمی پیچیدهتر از روش قبلی است. در این روش، شما میتوانید کنترل ComboBox خود را با استفاده از کلاس ComboBox ایجاد کنید. مراحل ایجاد یک ComboBox پویا به شرح زیر است:
- مرحله 1: یک ComboBox با استفاده از سازنده ComboBox() که توسط کلاس ComboBox ارائه شده است، ایجاد کنید:
// ایجاد ComboBox با استفاده از کلاس ComboBox ComboBox mybox = new ComboBox();
- مرحله 2: پس از ایجاد ComboBox، ویژگیهای آن را با استفاده از کلاس ComboBox تنظیم کنید:
// تنظیم مکان ComboBox mybox.Location = new Point(327, 77); // تنظیم اندازه ComboBox mybox.Size = new Size(216, 26); // افزودن آیتمها به ComboBox mybox.Items.Add("C#"); mybox.Items.Add("Java"); mybox.Items.Add("Scala"); mybox.Items.Add("C"); mybox.Items.Add("C++");
- مرحله 3: در نهایت، این کنترل ComboBox را با استفاده از متد Add() به فرم اضافه کنید:
// افزودن ComboBox به فرم this.Controls.Add(mybox);
مثال:
using System; using System.Drawing; using System.Windows.Forms; namespace MyWinFormsApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); InitializeControls(); } private void InitializeControls() { // ایجاد و تنظیم ویژگیهای لیبل Label l = new Label{ Location = new Point(122, 80), AutoSize = true, Text = "Select Programming Language" }; // ایجاد و تنظیم ویژگیهای ComboBox ComboBox mybox = new ComboBox{ Location = new Point(327, 77), Size = new Size(216, 26) }; mybox.Items.AddRange(new object[] { "C#", "Java", "Scala", "C", "C++" }); // افزودن کنترلها به فرم this.Controls.Add(l); this.Controls.Add(mybox); } } }
خروجی:
این کد یک فرم ویندوزی با یک لیبل و یک ComboBox ایجاد میکند که کاربر میتواند از آن برای انتخاب زبان برنامهنویسی استفاده کند.
ویژگیهای مهم ComboBox در سی شارپ
از خواص combobox در سی شارپ میتوان موارد زیر را نام برد:
- BackColor: برای تنظیم رنگ پسزمینه کنترل ComboBox استفاده میشود.
- DropDownHeight: برای تنظیم ارتفاع بخش کشویی ComboBox بر حسب پیکسل استفاده میشود.
- DropDownStyle: برای تنظیم سبک نمایش ComboBox استفاده میشود.
- DropDownWidth: برای تنظیم عرض بخش کشویی ComboBox استفاده میشود.
- Font: برای تنظیم فونت متن نمایش داده شده در ComboBox استفاده میشود.
- ForeColor: برای تنظیم رنگ پیشزمینه کنترل ComboBox استفاده میشود.
- Height: برای تنظیم ارتفاع کنترل ComboBox استفاده میشود.
- Items: برای دریافت شیءای که مجموعه آیتمهای موجود در ComboBox را نمایندگی میکند، استفاده میشود.
- MaxDropDownItems: برای تنظیم حداکثر تعداد آیتمهایی که در بخش کشویی ComboBox نمایش داده میشوند، استفاده میشود.
- MaxLength: برای تنظیم تعداد کاراکترهایی که کاربر میتواند در ComboBox تایپ کند، استفاده میشود.
- Name: برای تنظیم نام کنترل ComboBox استفاده میشود.
- SelectedItem: برای تنظیم آیتمی که در حال حاضر در ComboBox انتخاب شده است، استفاده میشود.
- Size: برای تنظیم ارتفاع و عرض کنترل ComboBox استفاده میشود.
- Sorted: برای تنظیم این که آیا آیتمهای داخل ComboBox مرتب شوند یا نه، استفاده میشود.
- Text: برای تنظیم متنی که با کنترل ComboBox مرتبط است، استفاده میشود.
- Visible: برای تنظیم نمایش یا عدم نمایش کنترل و تمام کنترلهای فرزند آن استفاده میشود.
پیشنهاد مطالعه: آموزش clean code در سی شارپ – بررسی ۱۵ نکته طلایی
رویدادهای مهم ComboBox در C#
از رویدادهای مهم combobox در سی شارپ میتوان موارد زیر را نام برد:
- Click: این رویداد زمانی رخ میدهد که روی کنترل ComboBox کلیک شود.
- DragDrop: این رویداد زمانی رخ میدهد که عملیات کشیدن و رها کردن به پایان برسد.
- DropDown: این رویداد زمانی رخ میدهد که بخش کشویی ComboBox نمایش داده شود.
- DropDownClosed: این رویداد زمانی رخ میدهد که بخش کشویی ComboBox دیگر قابل مشاهده نباشد.
- DropDownStyleChanged: این رویداد زمانی رخ میدهد که ویژگی DropDownStyle تغییر کند.
- Leave: این رویداد زمانی رخ میدهد که فوکوس ورودی از کنترل ComboBox برداشته شود.
- MouseClick: این رویداد زمانی رخ میدهد که روی کنترل ComboBox با ماوس کلیک شود.
- MouseDoubleClick: این رویداد زمانی رخ میدهد که روی کنترل ComboBox با ماوس دوبار کلیک شود.
- MouseDown: این رویداد زمانی رخ میدهد که نشانگر ماوس روی کنترل ComboBox قرار داشته باشد و دکمه ماوس فشار داده شود.
- MouseEnter: این رویداد زمانی رخ میدهد که نشانگر ماوس وارد کنترل ComboBox شود.
- MouseHover: این رویداد زمانی رخ میدهد که نشانگر ماوس روی کنترل ComboBox قرار گرفته و متوقف شود.
- SelectedIndexChanged: این رویداد زمانی رخ میدهد که ویژگی SelectedIndex تغییر کند.
اتصال combobox به دیتابیس در #c
مراحل اتصال ComboBox به دیتابیس درشارپ به صورت زیر است:
- ایجاد ارتباط با دیتابیس:
- ابتدا باید یک اتصال به پایگاه داده برقرار کنید. این کار معمولاً با استفاده از SqlConnection و SqlCommand انجام میشود.
- اجرای کوئری و دریافت دادهها:
- یک کوئری SQL اجرا کنید تا دادههای مورد نیاز برای پر کردن ComboBox دریافت شود. معمولاً این دادهها از یک جدول یا نمای خاص در پایگاه داده انتخاب میشوند.
- پر کردن ComboBox با دادهها:
- دادههای برگشتی از کوئری را به ComboBox اضافه کنید. این کار میتواند به صورت دستی با افزودن آیتمها به Items کنترل انجام شود یا با تنظیم ویژگی DataSource به طور خودکار.
مثال عملی:
using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace ComboBoxExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadComboBoxData(); } private void LoadComboBoxData() { // رشته اتصال به دیتابیس (باید بر اساس تنظیمات پایگاه داده شما تغییر کند) string connectionString = "Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;User ID=USERNAME;Password=PASSWORD"; using (SqlConnection conn = new SqlConnection(connectionString)) { try { conn.Open(); // کوئری برای انتخاب دادهها string query = "SELECT ColumnName FROM TableName"; using (SqlCommand cmd = new SqlCommand(query, conn)) { SqlDataReader reader = cmd.ExecuteReader(); // خواندن دادهها و افزودن آنها به ComboBox while (reader.Read()) { comboBox1.Items.Add(reader["ColumnName"].ToString()); } reader.Close(); } } catch (Exception ex) { MessageBox.Show("An error occurred: " + ex.Message); } } } } }
توضیحات:
- SqlConnection: برای برقراری ارتباط با دیتابیس استفاده میشود.
- SqlCommand: برای اجرای کوئری SQL به کار میرود.
- SqlDataReader: برای خواندن دادههای برگشتی از کوئری و افزودن آنها به ComboBox استفاده میشود.
- comboBox1.Items.Add: برای افزودن هر آیتم به ComboBox.
این مثال یک ComboBox را با دادههای یک ستون خاص از یک جدول در دیتابیس پر میکند. شما میتوانید بر اساس نیازهای خاص خود، این کد را تغییر دهید و مثلاً از ویژگیهای دیگر مانند ValueMember و DisplayMember برای کار با دادههای پیچیدهتر استفاده کنید.
پیشنهاد مطالعه: آموزش bool در سی شارپ به زبان ساده
مقدار دهی به combobox در c#
مقداردهی به ComboBox در سیشارپ میتواند به روشهای مختلفی انجام شود، از جمله افزودن آیتمها به صورت دستی، استفاده از یک آرایه یا لیست، و یا اتصال به دادههای یک پایگاه داده. در زیر چند روش متداول برای مقداردهی به ComboBox شرح داده شده است:
1. مقداردهی دستی
میتوانید به صورت دستی آیتمها را به ComboBox اضافه کنید:
comboBox1.Items.Add("Option 1"); comboBox1.Items.Add("Option 2"); comboBox1.Items.Add("Option 3");
2. استفاده از آرایه یا لیست
میتوانید یک آرایه یا لیست از مقادیر را به ComboBox اضافه کنید:
// استفاده از آرایه string[] items = { "Item 1", "Item 2", "Item 3" }; comboBox1.Items.AddRange(items); // استفاده از لیست List itemList = new List { "Item A", "Item B", "Item C" }; comboBox1.DataSource = itemList;
3. تنظیم مقدار پیشفرض
برای انتخاب یکی از آیتمهای ComboBox به عنوان مقدار پیشفرض:
comboBox1.SelectedIndex = 0; // انتخاب اولین آیتم
یا میتوانید با استفاده از مقدار متن مشخصی آن را انتخاب کنید:
comboBox1.SelectedItem = "Option 2";
4. مقداردهی از دیتابیس
همانطور که در پاسخ قبلی توضیح داده شد، میتوانید مقادیر ComboBox را از یک دیتابیس استخراج و مقداردهی کنید. این روش معمولاً با استفاده از DataReader و حلقه برای افزودن آیتمها به ComboBox انجام میشود.
5. استفاده از DisplayMember و ValueMember
اگر بخواهید ComboBox مقادیر متفاوتی برای نمایش و برای استفاده داخلی داشته باشد (مثلاً نمایش نام کاربر ولی استفاده از ID کاربر):
comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "ID"; comboBox1.DataSource = GetUsers(); // فرض بر اینکه GetUsers() لیستی از اشیا را برمیگرداند
در این مثال، DisplayMember مشخص میکند که کدام خصوصیت از اشیا نمایش داده شود و ValueMember مشخص میکند که کدام خصوصیت به عنوان مقدار انتخابی در نظر گرفته شود.
6. پاک کردن آیتمها
برای پاک کردن تمام آیتمهای ComboBox:
comboBox1.Items.Clear();
با این روشها میتوانید ComboBox خود را در سیشارپ به دلخواه مقداردهی و تنظیم کنید.
نمایش اطلاعات جدول در لیست combo box
برای نمایش اطلاعات یک جدول در ComboBox در سی شارپ (C#)، ابتدا باید دادهها را از پایگاه داده خوانده و سپس آنها را به ComboBox اضافه کنید. در اینجا یک مثال ساده از نحوه انجام این کار آورده شده است:
مراحل:
- ایجاد اتصال به پایگاه داده: اتصال به پایگاه داده با استفاده از کلاس SqlConnection.
- اجرای کوئری: اجرای یک کوئری SQL برای دریافت دادهها از جدول مورد نظر.
- خواندن دادهها: استفاده از SqlDataReader برای خواندن دادههای برگشتی.
- مقداردهی به ComboBox: اضافه کردن دادههای خوانده شده به ComboBox.
مثال کد:
فرض کنید یک پایگاه داده با نام MyDatabase و یک جدول با نام Products داریم که شامل ستونهای ProductID و ProductName است. میخواهیم نام محصولات را در ComboBox نمایش دهیم.
using System; using System.Data.SqlClient; using System.Windows.Forms; namespace ComboBoxExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadProductsIntoComboBox(); } private void LoadProductsIntoComboBox() { // رشته اتصال به دیتابیس (باید بر اساس تنظیمات پایگاه داده شما تغییر کند) string connectionString = "Data Source=SERVER_NAME;Initial Catalog=MyDatabase;User ID=USERNAME;Password=PASSWORD"; using (SqlConnection conn = new SqlConnection(connectionString)) { try { conn.Open(); // کوئری برای انتخاب دادهها از جدول string query = "SELECT ProductID, ProductName FROM Products"; using (SqlCommand cmd = new SqlCommand(query, conn)) { SqlDataReader reader = cmd.ExecuteReader(); // پاک کردن آیتمهای قبلی در صورت وجود comboBox1.Items.Clear(); // خواندن دادهها و افزودن آنها به ComboBox while (reader.Read()) { // ایجاد یک شیء جدید برای ذخیره آیتمها string productName = reader["ProductName"].ToString(); comboBox1.Items.Add(productName); } reader.Close(); } } catch (Exception ex) { MessageBox.Show("An error occurred: " + ex.Message); } } } } }
توضیحات:
- رشته اتصال (connectionString): شامل اطلاعات لازم برای اتصال به پایگاه داده مانند نام سرور، نام پایگاه داده، نام کاربری و رمز عبور است.
- اجرای کوئری (SqlCommand): کوئری SELECT برای دریافت نام محصولات از جدول Products.
- خواندن دادهها (SqlDataReader): دادههای برگشتی از پایگاه داده با استفاده از SqlDataReader خوانده میشود و هر نام محصول به ComboBox اضافه میشود.
- پاک کردن آیتمهای قبلی: اگر ComboBox قبلاً دارای آیتمهایی باشد، با استفاده از Items.Clear() آنها را پاک میکنیم تا دادههای جدید به درستی نمایش داده شوند.
این روش به شما امکان میدهد تا دادههای جدول را به طور داینامیک به ComboBox در سی شارپ اضافه کنید و به کاربران اجازه دهید تا از بین آیتمهای موجود انتخاب کنند.
پیشنهاد مطالعه: آموزش ساخت بازی با سی شارپ + نقشه راه و منابع
Listbox در سی شارپ چیست؟
لیست باکس در سیشارپ (C#) یک کنترل کاربری است که در برنامهنویسی ویندوز فرمها (Windows Forms) برای نمایش لیستی از آیتمها به کاربر استفاده میشود. کاربران میتوانند یک یا چند آیتم را از لیست انتخاب کنند، بسته به تنظیمات کنترل. ListBox به توسعهدهندگان این امکان را میدهد تا لیستهای طولانی از گزینهها را به صورت پیمایشی در اختیار کاربران قرار دهند و انتخابهای کاربر را به راحتی مدیریت کنند.
این کنترل دارای ویژگیها و رویدادهای متعددی است که به کمک آنها میتوان نمایش و تعامل با لیست آیتمها را شخصیسازی کرد، مانند اضافه کردن آیتمها به صورت پویا، حذف آنها، و پاسخ به تغییرات در انتخابهای کاربر.
کلام نهایی
ComboBox در سی شارپ یک ابزار قدرتمند برای ایجاد رابطهای کاربری تعاملپذیر و پویا است که به کاربران امکان میدهد از میان گزینههای متعدد انتخاب کنند یا دادهها را به صورت داینامیک وارد نمایند. این کنترل با قابلیتهای متنوعی از جمله افزودن آیتمها به صورت دستی، بارگذاری دادهها از پایگاه داده و مدیریت رویدادها، به شما این امکان را میدهد که تجربه کاربری بهتری ارائه دهید.
اگر به یادگیری عمیقتر سیشارپ و تسلط بر ابزارهای مشابه علاقهمند هستید، به شما پیشنهاد میکنیم که در دورههای آموزش سی شارپ و آموزش برنامه نویسی مکتبخونه شرکت کنید. این دورهها با ارائه مطالب جامع و عملی، به شما کمک میکنند تا مهارتهای خود را ارتقا دهید و به توسعهدهندهای حرفهای تبدیل شوید. برای کسب اطلاعات بیشتر و ثبتنام در دورهها، به وبسایت مکتبخونه مراجعه کنید و از فرصت یادگیری بهرهمند شوید.
منبع