2016-03-11 2 views
1

Я делаю общее программное обеспечение, и в нем я добавил несколько меток (я не могу сказать больше .. xD) Итак, я хотел пропустить каждый элемент управления в моей форме или, по крайней мере, все ярлыки ... Я попыталсяLooping через все элементы управления [MaterialSkin] (C#)

foreach (Control c in this.Controls) 
{ 
    //item.Font.Size = 11f; 
    c.ForeColor = Color.White; 
} 

Но я думаю, что это только петли на MaterialSkin.Controls.MaterialTabControl

, потому что, когда я пытаюсь запустить любой код с MaterialLabel..etc

foreach (MaterialLabel c in this.Controls) 
    { 
     //item.Font.Size = 11f; 
     c.ForeColor = Color.White; 
    } 

он говорит мне

Additional information: Unable to cast object of type 'MaterialSkin.Controls.MaterialTabControl' to type 'MaterialSkin.Controls.MaterialLabel'. 

мне нужна помощь Пожалуйста, помогите мне :) Я не очень хороший программист ... Так что, пожалуйста, помогите

Теперь будет играть Left 4 Dead XD

+1

'foreach (MaterialLabel c в этом.Controls.OfType ())' – LarsTech

ответ

1

Перед изменение любой проверки свойства, если это тип MaterialLabel.

foreach (Control c in this.Controls) 
{ 
    if(c.GetType()==typeof(MaterialLabel)) 
    { 
     c.Font = new Font(c.Font, FontStyle.Bold); 
     c.ForeColor = Color.White; 
    } 
} 

или LarsTech сказал:

foreach (MaterialLabel c in this.Controls.OfType<MaterialLabel>()) 
{ 
    c.Font = new Font(c.Font, FontStyle.Bold); 
    c.ForeColor = Color.White; 
} 
+0

Я думаю, что он даже не доходит до других элементов управления ... он заканчивается на Tabcontrol, и это все ... он не работает с цикл, но если я его обычно использую, он работает Можете ли вы также рассказать мне, как сделать его полужирным, потому что когда я использую 'c.Font.Bold = true;' он говорит, что он не может быть назначен, потому что он только для чтения –

+0

@RajaBilal I отредактировал мой ответ. пожалуйста, посмотрите на него –

+0

Я сказал вам, что он не работает ... Код не работает ... прочитайте мой комментарий снова, пожалуйста, –

0

несколько вариантов ...

foreach (var c in this.Controls) 
{ 
    if(c is MaterialLabel) 
    { 
     var i = (MaterialLabel)c; 
     i.Font = new Font(c.Font, FontStyle.Bold); 
     i.ForeColor = Color.White; 
    } 
} 

...

foreach (var c in this.Controls) 
{ 
    //slightly faster than the first version but won't work with struct 
    var i = c as MaterialLabel; 
    if(i != null) 
    { 
     i.Font = new Font(c.Font, FontStyle.Bold); 
     i.ForeColor = Color.White; 
    } 
} 

...

//cleanest 
foreach (var c in this.Controls.OfType<MaterialLabel>()) 
{ 
    c.Font = new Font(c.Font, FontStyle.Bold); 
    c.ForeColor = Color.White; 
} 
+0

Не работает. .. Это потому, что я использую собственный шрифт, и когда я устанавливаю цвет по умолчанию, он автоматически изменяется на черный ... даже файл + выполненный exe, но когда я делаю это в файле, например 'conditionlbl.ForeColor = Color. Белый, 'Он работает ... но он не работает через цикл, а не по умолчанию. –

+0

Я использую метод, представленный здесь http://hongouru.blogspot.com/2010/10/c-how-to-add- fonts-ttf-true-type-fonts.html, чтобы использовать пользовательский шрифт ... –

+0

Возможно, это связано с тем, что я использую материал Label и его нет в библиотеке Control System ... они находятся внутри элемента управления Tab и внутри от 2 до 3 панелей ... и только до тех пор, пока управление вкладками ... не внутри внутри я имею в виду внутри этих панелей ... –

Смежные вопросы