DropdownList - ochiladigan ro'yxatni ochish uchun elementning o'ng tomonidagi o'q tugmasini bosishingiz kerak.
Simple - ComboBox oddiy matn oynasini ifodalaydi, unda biz elementlar orasida harakat qilish uchun klaviatura yuqoriga/pastga tugmalaridan foydalanishimiz mumkin.
SelectedIndexChanged hodisasi
ComboBox uchun eng muhim hodisa SelectedIndexChanged bo’lib, bu hodisa ro'yxatdagi elementni tanlashni kuzatish imkonini beradi:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string selectedState = comboBox1.SelectedItem.ToString();
MessageBox.Show(selectedState);
}
}
Bu yerda ham SelectedItem xususiyati tanlangan elementga murojaat qiladi.
4-§. ListBox va ComboBoxda ma'lumotlarni bog'lash
ListBox va ComboBox komponentlarining Items to'plamiga to'g'ridan-to'g'ri elementlarni qo'shishdan tashqari, biz ma'lumotlarni ulash mexanizmidan ham foydalanishimiz mumkin.
ListBox va ComboBox-da ma'lumotlarni bog'lash quyidagi xususiyatlar yordamida amalga oshiriladi:
DataSource - ma'lumotlar manbai - ba'zi massiv yoki obyektlar to'plami.
DisplayMember - obyektni ListBox/ComboBox-da ko'rsatish uchun foydalaniladigan xususiyat.
ValueMember - obyektning qiymati sifatida foydalaniladigan xususiyat.
Bir misolni ko'rib chiqamiz :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
List
phones = new List
{
new Phone { Id=11, Name="Samsung Galaxy Ace 2", Year=2012},
new Phone { Id=12, Name="Samsung Galaxy S4", Year=2013},
new Phone { Id=13, Name="iPhone 6", Year=2014},
new Phone { Id=14, Name="Microsoft Lumia 435", Year=2015},
new Phone { Id=15, Name="Xiaomi Mi 5", Year=2015}
};
listBox1.DataSource = phones;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
}
void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// tanlangan obyektning id sini olish
int id = (int)listBox1.SelectedValue;
// tanlangan obyektlarning barchasini olish
Phone phone = (Phone)listBox1.SelectedItem;
MessageBox.Show(id.ToString() + ". " + phone.Name);
}
}
class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public int Year { get; set; }
}
Shunday qilib, formada listBox1 nomli ListBox mavjud. Kodda uchta xususiyatga ega bo’lgan Phone sinfi mavjud bo'lib, biz uning obyektlarni sanab o'tmoqchimiz. Oldingi mavzulardan farqli o'laroq bu vazifa qiyinroq, chunki biz oldingi safar oddiy satrlarni ko'rsatganmiz, ammo bu yerda bizda murakkab obyektlar mavjud.
Chiqish uchun biz bog'lash mexanizmidan foydalanamiz. Birinchidan, biz ma'lumotlar manbai sifatida telefonlar ro'yxatini o'rnatamiz:
listBox1.DataSource = phones;
Keyin Phone sinfining Name xususiyatini displey xususiyati sifatida, Id xususiyatini esa qiymat xossasi sifatida o‘rnatamiz:
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
Keyin biz ko'rsatilgan xususiyatning qiymatini ro'yxatda ko'ramiz. U har bir Phone obyektini ifodalaydi.
Id xossasi bo'lgan qiymat xossasi yordamida biz ma'lumotlar manbai bilan ishlashni soddalashtirishimiz mumkin. Bunday holda, u katta rol o'ynamaydi. Ammo agar biz ma'lumotlar bazasidan ma'lum bir obyekt to'plamini ma'lumotlar manbai sifatida ishlatgan bo'lsak, u holda id yordamida ma'lumotlar bazasini o'chirish, yangilash va o'zaro aloqada bo'lishi biz uchun osonroq bo'lar edi.
Va endi biz biron bir obyektni tanlasak, ListBox elementining SelectedItem xususiyati Phone obyektini o'z ichiga oladi, undan xususiyat qiymatlarini olishimiz mumkin:
Phone phone = (Phone)listBox1.SelectedItem;
string name = phone.Name;
Va tanlangan qiymat, ya'ni tanlangan telefonning Id xususiyatining qiymati SelectedValue xususiyatida bo'ladi.
Agar biz dasturni ishga tushirsak, biz ko'rsatilgan barcha telefonlarni ko'ramiz:
ComboBox elementi uchun hammasi bir xil. ListBox dan tashqari formada ComboBox bo'lsin:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
List
phones = new List
{
new Phone { Id=11, Name="Samsung Galaxy Ace 2", Year=2012},
new Phone { Id=12, Name="Samsung Galaxy S4", Year=2013},
new Phone { Id=13, Name="iPhone 6", Year=2014},
new Phone { Id=14, Name="Microsoft Lumia 435", Year=2015},
new Phone { Id=15, Name="Xiaomi Mi 5", Year=2015}
};
comboBox1.DataSource = phones;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Phone phone = (Phone)comboBox1.SelectedItem;
listBox1.Items.Add(phone);
}
}
class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public int Year { get; set; }
}
Bundan tashqari, u birlashma qutisi uchun ulanishni, shuningdek, ko'rsatish xususiyati va qiymat xususiyatini o'rnatadi. Bunga qo'shimcha ravishda, tanlangan element ListBoxga tushishi uchun kombinatsiyalangan qutidagi elementni tanlash hodisasi shu yerda ko'rib chiqiladi.
ListBox-dan farqli o'laroq, ComboBox tanlangan obyektni boshqarish uchun uchta xususiyatga ega:
Do'stlaringiz bilan baham: |