

Chechkedlistbox Biri Seçildiğinde Diğerlerini Seçme C# (Yardım)
-
merhaba checkedlistboxta 4 tane elemanım var diyelim bunlardan biri tümü.tümü seçildiğinde diğer 3 ünün de seçilmesini istiyorum bunu yaptım fakat tümü elemanının seçimi kaldırıldığında diğerleri kalkmıyoru bunu yapamadım nasıl yapabilirim hangi event a yazmam gerekir?
tümü seçildiğinde yaptığım işlem
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (checkedListBox1.SelectedIndex == 0)
{
for (int item = 1; item < checkedListBox1.Items.Count; item++)
{
checkedListBox1.SetItemChecked(item, true);
}
}
}
-
item true olarak argument göndermez..boxların form üzerindeki index değerlerini alman lazım..gönderse de hepsini seçemez çünkü hangisi olduğunu bilemeyecek diye düşünüyorum.
GodLike tarafından 27/Eyl/12 12:32 tarihinde düzenlenmiştir -
birde boyle dene :
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) { if (checkedListBox1.GetItemCheckState(0) == CheckState.Checked) // kontrol ettigin nesne { for (int item = 1; item < checkedListBox1.Items.Count; item++) { checkedListBox1.SetItemChecked(item, true); } } else { for (int item = 1; item < checkedListBox1.Items.Count; item++) { checkedListBox1.SetItemChecked(item, false); } } } -
Kodu düzenleyip tekrar ekliyorum:
İlk önce öğelere tıklandığı anda seçme işlemini yapması için, Formun load olayında CheckOnClick özelliğiniz true yapıyoruz. Daha sonra listboxa tıklandığında ilk önce tıklanan id' ye bakıyoruz. Tıklanan öğenin indexi 0 sa "Tümü" ile ilgili işlemlere giriyoruz. Eğer tıklanan öğenin indexi 0 değilse demekki tümü seçili olmayacak. Bunu da else satırında false olarak işaretliyoruz.
Tümü işlemlerine gelirsek, eğer seçilen 0 sa ve checked durumu seçiliyse hepsini seçiyoruz. Eğer seçilen 0 sa ve durumu da unchecked ise tümünün checked özelliğini false yapıyoruz. Kod çalışıyor arkadaşım, direkt kullanabilirsin.
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (clbSecici.SelectedIndex == 0)
{
if (clbSecici.GetItemCheckState(0) == CheckState.Checked)
{
for (int item = 0; item < clbSecici.Items.Count; item++)
{
clbSecici.SetItemChecked(item, true);
}
}
else
{
for (int item = 0; item < clbSecici.Items.Count; item++)
{
clbSecici.SetItemChecked(item, false);
}
}
}
else
{
clbSecici.SetItemChecked(0, false);
}
}
private void Form1_Load(object sender, EventArgs e)
{
clbSecici.CheckOnClick = true;
}Buradan Örnek Dosyayı İndirebilirsin. CheckedListBox Tümü Seç-Seçme
yavuzaydogan tarafından 27/Eyl/12 13:09 tarihinde düzenlenmiştir -
yavuzaydogan bunu yazdı
Kodu düzenleyip tekrar ekliyorum:
İlk önce öğelere tıklandığı anda seçme işlemini yapması için, Formun load olayında CheckOnClick özelliğiniz true yapıyoruz. Daha sonra listboxa tıklandığında ilk önce tıklanan id' ye bakıyoruz. Tıklanan öğenin indexi 0 sa "Tümü" ile ilgili işlemlere giriyoruz. Eğer tıklanan öğenin indexi 0 değilse demekki tümü seçili olmayacak. Bunu da else satırında false olarak işaretliyoruz.
Tümü işlemlerine gelirsek, eğer seçilen 0 sa ve checked durumu seçiliyse hepsini seçiyoruz. Eğer seçilen 0 sa ve durumu da unchecked ise tümünün checked özelliğini false yapıyoruz. Kod çalışıyor arkadaşım, direkt kullanabilirsin.
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (clbSecici.SelectedIndex == 0)
{
if (clbSecici.GetItemCheckState(0) == CheckState.Checked)
{
for (int item = 0; item < clbSecici.Items.Count; item++)
{
clbSecici.SetItemChecked(item, true);
}
}
else
{
for (int item = 0; item < clbSecici.Items.Count; item++)
{
clbSecici.SetItemChecked(item, false);
}
}
}
else
{
clbSecici.SetItemChecked(0, false);
}
}
private void Form1_Load(object sender, EventArgs e)
{
clbSecici.CheckOnClick = true;
}Buradan Örnek Dosyayı İndirebilirsin. CheckedListBox Tümü Seç-Seçme
hocam teşekkür ederim çalışıyor fakat bazen kaldırma işlemi çalışmıyor
@rakkoc onu bende denemiştim olmuyor
-
Takılması büyük ihtimalle ard arda tıklamalardan kaynaklanıyor. Saniyede 3-5 defa tıklayınca çalışan for döngüleri takılıyor doğal olarak. Ama proje kullanılmaya başlandığında kimse saniyede 3-5 defa tıklamaz diye düşünüyorum :)
Ama programcıysan her ihtimali göz önüne alman gerekiyor. Bundan sonrası sana kalmış araya bir iki kod sıkıştırırsan düzeltirsin diye umuyorum. İyi Çalışmalar. -
yavuzaydogan bunu yazdı
Takılması büyük ihtimalle ard arda tıklamalardan kaynaklanıyor. Saniyede 3-5 defa tıklayınca çalışan for döngüleri takılıyor doğal olarak. Ama proje kullanılmaya başlandığında kimse saniyede 3-5 defa tıklamaz diye düşünüyorum :)
Ama programcıysan her ihtimali göz önüne alman gerekiyor. Bundan sonrası sana kalmış araya bir iki kod sıkıştırırsan düzeltirsin diye umuyorum. İyi Çalışmalar.evet program yazdıgımız için her ihimali düşünmemiz gerekiyor :) hocam nasıl düzelticem ki peki önerin var mı
edit: hocam bence selectedindexchanged event ından kaynaklanıyor farklı yerlere tıklamadıgın için index değişmiyor o yüzden takılıyor aslında forla alakası olmayabilir
kajmerpac tarafından 27/Eyl/12 13:50 tarihinde düzenlenmiştir