En iyi yanıtlayıcılar
C#'da this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().ForEach(p => p.BackColor=Color.White); Kodunun çalşma mantığı?

Soru
-
Arkadaşlar elimde bir kod var:
this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().ForEach(p => p.BackColor=Color.White);
bu kod bütün resimleri beyaz yapıyor
ben bu kodun çalışma mantığını anlayamadım mesela picturebox 5 den 10'a kadar resimleri beyaz yapmak istiyorsam bu kodda nasıl bir değişiklik yapmalıyım?
yada if() komutu ile beraber bunu nasıl kullanamabilirim yani şöyle
if(picturebox2 den 12 ye kadar picturebox.color==color.red gibi) { .... }
yani böyle şeyleri nasıl kontrol edebilirim?
- Düzenleyen özcan özaltın 7 Nisan 2016 Perşembe 19:45
Yanıtlar
-
merhaba cihanın dedıgı gıbı ToList deki <PictureBox> yerine ToList() yapmanız lazım enumarable yapamıyor classınızı yada controlünüzü.
düzelttim ama bi değişiklik göremedim
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().Skip(5).Take(5).ForEach(p => p.BackColor=Color.White); namespace Dalga_deneme_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void pictureBox12_Click(object sender, EventArgs e) { this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().ForEach(p => p.BackColor=Color.White); //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } }
Ben size bu kodu linq olmadan nasıl yazabileceğinizi tarif edeyim o şekilde kafanızda canlanır sanırım.
Aşağıdaki kod ile forma eklenen 15 tane picturebox'tan 6.7.8.9.10. picturebox'lara erişiliyor. Bunun linq ile yapmak ise arkadaşların söylediği gibi çok daha kısa ve kolay.
List<PictureBox> list = new List<System.Windows.Forms.PictureBox>(); foreach (var control in this.Controls) { if (control is PictureBox) { list.Add(control as PictureBox); } } int skip = 5; int take = 5; for (int i = skip; i < (take + skip); i++) { var pbox = list[i]; Console.WriteLine(pbox.Name); }
- Yanıt Olarak İşaretleyen özcan özaltın 9 Nisan 2016 Cumartesi 08:01
Tüm Yanıtlar
-
Merhaba MSDN de bulunan lambda ifadeleri hakkındaki desteği okumanızı tavsiye ederim
https://msdn.microsoft.com/tr-tr/library/bb397687.aspx
ayrıca
this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().Skip(5).Take(5).ForEach(p => p.BackColor=Color.White);
seklınde 0 dan 5 e kadar atlayıp daha sonrası ıcın 5 element cekerek ( 5 den sonrası için ) işlem yapabilirsiniz.
Eğer cevapları yararlı görüyorsanız lütfen cevap olarak işaretleyerek oy verin. Bu bizlere daha sağlıklı ve pozitif bir topluluk oluşturmamıza yardımcı olacaktır. Mutlu programlamalar.
-
-
Merhaba MSDN de bulunan lambda ifadeleri hakkındaki desteği okumanızı tavsiye ederim
https://msdn.microsoft.com/tr-tr/library/bb397687.aspx
ayrıca
this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().Skip(5).Take(5).ForEach(p => p.BackColor=Color.White);
seklınde 0 dan 5 e kadar atlayıp daha sonrası ıcın 5 element cekerek ( 5 den sonrası için ) işlem yapabilirsiniz.
Eğer cevapları yararlı görüyorsanız lütfen cevap olarak işaretleyerek oy verin. Bu bizlere daha sağlıklı ve pozitif bir topluluk oluşturmamıza yardımcı olacaktır. Mutlu programlamalar.
-
-
Erdem Avni SELÇUK Şöyle bi hata aldım neden kaynaklanıyor olabilir?
bi de Cihan Yakar ToList deki <PictureBox> ifadesini silince de hata verdi bende dokunmadım
-
-
merhaba cihanın dedıgı gıbı ToList deki <PictureBox> yerine ToList() yapmanız lazım enumarable yapamıyor classınızı yada controlünüzü.
düzelttim ama bi değişiklik göremedim
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().Skip(5).Take(5).ForEach(p => p.BackColor=Color.White); namespace Dalga_deneme_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void pictureBox12_Click(object sender, EventArgs e) { this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().ForEach(p => p.BackColor=Color.White); //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } }
-
merhaba cihanın dedıgı gıbı ToList deki <PictureBox> yerine ToList() yapmanız lazım enumarable yapamıyor classınızı yada controlünüzü.
düzelttim ama bi değişiklik göremedim
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //this.Controls.Cast<Control>().OfType<PictureBox>().ToList<PictureBox>().Skip(5).Take(5).ForEach(p => p.BackColor=Color.White); namespace Dalga_deneme_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void pictureBox12_Click(object sender, EventArgs e) { this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().ForEach(p => p.BackColor=Color.White); //this.Controls.Cast<Control>().OfType<PictureBox>().ToList().Skip(5).Take(5).ForEach(p => p.BackColor = Color.White); } }
Ben size bu kodu linq olmadan nasıl yazabileceğinizi tarif edeyim o şekilde kafanızda canlanır sanırım.
Aşağıdaki kod ile forma eklenen 15 tane picturebox'tan 6.7.8.9.10. picturebox'lara erişiliyor. Bunun linq ile yapmak ise arkadaşların söylediği gibi çok daha kısa ve kolay.
List<PictureBox> list = new List<System.Windows.Forms.PictureBox>(); foreach (var control in this.Controls) { if (control is PictureBox) { list.Add(control as PictureBox); } } int skip = 5; int take = 5; for (int i = skip; i < (take + skip); i++) { var pbox = list[i]; Console.WriteLine(pbox.Name); }
- Yanıt Olarak İşaretleyen özcan özaltın 9 Nisan 2016 Cumartesi 08:01
-
Ben size bu kodu linq olmadan nasıl yazabileceğinizi tarif edeyim o şekilde kafanızda canlanır sanırım.
Aşağıdaki kod ile forma eklenen 15 tane picturebox'tan 6.7.8.9.10. picturebox'lara erişiliyor. Bunun linq ile yapmak ise arkadaşların söylediği gibi çok daha kısa ve kolay.
List<PictureBox> list = new List<System.Windows.Forms.PictureBox>(); foreach (var control in this.Controls) { if (control is PictureBox) { list.Add(control as PictureBox); } } int skip = 5; int take = 5; for (int i = skip; i < (take + skip); i++) { var pbox = list[i]; Console.WriteLine(pbox.Name); }
- Düzenleyen özcan özaltın 9 Nisan 2016 Cumartesi 13:43