h5h5 Ответов: 3

Как считать этикетки с красным обратным цветом


Привет друзья,

У меня есть десять меток в моем приложении Winforms на c#, они имеют задний цвет "красный".

Может ли кто-нибудь просто помочь написать это как вывод

Количество красных меток: 10.

Спасибо!

Что я уже пробовал:

Я пробую со счетчиком, но безрезультатно.

Label lb;
            int count = 1; ;
            if (lb.BackColor == Color.Red)
{ 
count++;
}

                label6.Text = count.ToString();

CHill60

Какой код вы пробовали? Разделять его.
Это Winforms или WPF?

[no name]

"Может ли кто-нибудь просто помочь написать это как вывод", конечно.
Приставка.WriteLine ("количество красных меток: 10.");

h5h5

Фактически считая их
не просто писать, а код подсчитывать ярлыки, а потом, как положено, быть 10

3 Ответов

Рейтинг:
2

Karthik_Mahalingam

попробовать это

int count = 0;
            foreach (Control c in this.Controls)
            {
                if (c.GetType() == typeof(Label))
                    if (((Label)c).BackColor == Color.Red)
                        count++;
            }

Примечание: если метки присутствуют в любом элементе управления контейнером, то вам также придется итерировать контейнер, например этот[^]


h5h5

Привет Karthik, я использовал его, нет никакой ошибки, но когда я хочу показать, то количество меток с красным цветом есть 0 меток на самом деле у меня есть 10 красных меток.
Я использовал этот код и этот:
метки.текст= "красные ярлыки:" + счетчик;
и вот результат
Красные Метки: 0

h5h5

Я пробую это, все этикетки находятся в форме, а не в контейнере.
int count = 0;
foreach (управление c в этом.Управления)
{
if (c. GetType() == typeof(Label))
if (((метка) c).Свойства Backcolor == Цвет.Красный)
считать++;
}
label16.Text = "Label:" + count;

У меня опять та же проблема, там не считая результата снова метка: 0

Karthik_Mahalingam

элементы управления этикеткой помещаются только в форму или внутри контейнера?

h5h5

Метки находятся внутри группового поля, в загрузочном черве они скрыты, когда я нажимаю кнопку result, метки отображаются, там много меток, но я хочу, чтобы только метки с красным цветом считались и в качестве вывода были: красные метки: 10

Karthik_Mahalingam

Использовать groupboxname.контролирует на месте "это.контроль"

h5h5

Я пробую это:
int count = 0;
foreach (управление c в этом.Управления)
{
если (c-метка)
если (гр.Свойства Backcolor == Цвет.Красный)
считать++;
}
Ящик для сообщений.Показать (граф.Метод toString());

У меня опять проблема, красных меток не сосчитать.
В результате в конце снова получается число 0. Он принимает значение " int count=0"
Если я удалю это: if (c. BackColor == Color. Red)
тогда все метки подсчитываются.

Karthik_Mahalingam

держите точку останова в "if (c. BackColor == Color. Red)" и проверьте фактический цвет. это также может быть какое-то значение RGB..

h5h5

Может быть, я не должен прояснять. Мои ярлыки скрываются, когда я нажимаю кнопку ex. в текстовое поле с именем txtRun, я пишу выполнить, в текстовое поле с именем TXT и играть, я пишу пьесы. Играть и бегать правы ansewr, поэтому, когда я нажмите кнопку "бутон", там показали две наклейки с красным цветом, и электронной mesagebox с сообщения "Красной этикетки: 2" .....

Karthik_Mahalingam

опубликуйте его скриншот.

h5h5

Как?
Я не могу опубликовать скриншот

Karthik_Mahalingam

https://snag.gy/

h5h5

https://snag.gy/lLD7EZ.jpg

Karthik_Mahalingam

foreach (Control c in groupboxname.Управления)

h5h5

черная линия - это не гропубокс,
это просто инструмент линейной формы, метки находятся в форме

Karthik_Mahalingam

хорошо, тогда сделай одну вещь..
добавление массива
var lables = новая метка [] { lable1, label1,lablel2};
foreach (Label in lables )

h5h5

извините, что вы правы, есть еще один groupbox, теперь он в порядке, но нет фильтра, он принимает все метки, нет только красных?
Я использовал этот код:
foreach (управление c в grUnit1.Управления)
{

if (c. GetType() == typeof(Label))
if (((метка) c).Свойства Backcolor == Цвет.Красный)
считать++;

}
label16.Text = "красные метки" + count;

Karthik_Mahalingam

Поставьте окно сообщения и что вы здесь получаете
Этикетка) в).Задний цвет

h5h5

Пожалуйста, посмотрите еще раз на этот печатный экран.
https://snag.gy/upAHDJ.jpg

Karthik_Mahalingam

ладно

h5h5

int count = 0;
for (int i = 0; i= = элементы управления.Граф; i++)
{
если (элементы[I] - это ярлык &ампер;&ампер; элементы[я].Свойства Backcolor == Цвет.Красный)
//if (c. GetType() == typeof(Label))
//if (((метка) c).Свойства Backcolor == Цвет.Красный)
считать++;
}
Ящик для сообщений.Показать ("Тота" + граф);

Я использовал этот, но тоже безрезультатно... :(
Я застрял

Karthik_Mahalingam

пингуйте мне сегодня вечером в 8 вечера, у вас есть team viewer?

Karthik_Mahalingam

Посылаю с моего мобильного
Не обращайте внимания на опечатку

h5h5

если я использую флажок, он работает, просто с метками проблема

int count = 0;
foreach (управление c в Panel1.Управления)
{
если (в стоит галочка &&усилителя; (C как флажок).Проверен)
{
считать++;
}
}
Этикетка 1.Текст = "количество:" + количество;

Это правильно

Karthik_Mahalingam

ладно, ладно..
опубликуйте код файла конструктора.

h5h5

Я решаю ее, думаю, проблема была в том, что мои ярлыки-это Hide(). Итак, есть ли возможность подсчитать все метки, кроме тех, которые hide(). Ex. Label1.hide() Label2.hide() программа подсчитывает также и эти метки. Как перестать считать скрытые метки.

Karthik_Mahalingam

вы в сети?

h5h5

Картик, спасибо за ваше время и помощь. Я решаю ее.
У меня были спрятаны какие-то ярлыки. и счетчик пересчитывает их все. Я использовал этот код и все в порядке:
если ((с этикеткой) усилитель&;&ампер; (с.Свойства Backcolor == Цвет.Лимонно-пам)&;&ампер; (с.Видно))
Большое вам спасибо!

Karthik_Mahalingam

крутой..
хорошо, закрой этот пост.

h5h5

Как?
Я не могу опубликовать скриншот?

Karthik_Mahalingam

https://snag.gy/

Рейтинг:
1

CHill60

Вот как вы, вероятно, хотите это сделать...

Инициализируйте целочисленный счетчик.

Используйте цикл foreach (Ref:foreach, in (ссылка на C# )[^]), чтобы пройти через все элементы управления в вашей форме, используя коллекцию элементов управления формы (Ref: Как получить доступ к элементам управления с помощью коллекции элементов управления[^] )

Проверьте тип каждого элемента управления с помощью control.GetType () (Ref: Объект.Метод GetType (Система)[^]) и сравнить его с typeof Ярлык (Ссылка:typeof (ссылка на C# )[^])

Если они соответствуют типам, то вы можете проверить, если BackColor является Color.Red .. Намек, возможно, вам придется cast элемент управления к явной метке для доступа к BackColor объекта (ссылка: Приведение и преобразование типов (руководство по программированию на C# )[^] )

Вы можете использовать MessageBox.Show() для отображения результатов (Ref: Ящик для сообщений.Показать Метод (System.Окна.Формы)[^] )


h5h5

эх Я все еще предпринимаю шаги в программировании.
Я ценю эту помощь и постараюсь, но не думаю, что смогу это сделать..
Если вы только можете написать несколько кодов.
Между прочим
спасибо

CHill60

Если я просто напишу код для вас, то вы никогда не научитесь, и ни вы, ни я не выиграем.
Попробуйте, это не так сложно, как кажется, особенно если вы посмотрите на ссылку "как:", которую я вам дал ... он поставляется с кодом! Вы узнаете гораздо больше, пытаясь и терпя неудачу, чем просто копируя (поверьте мне ... Я был там). Если вы застряли, то вернитесь с кодом, который у вас есть до сих пор... сделайте небольшие шаги и используйте отладчик шаг за шагом, чтобы вы могли точно видеть, что происходит.
удачи

[no name]

Извините, но если после пяти лет изучения C# вы не можете сделать что-то столь же простое, как создание цикла for и поиск меток, которые вы ищете, пришло время найти другое хобби.

Рейтинг:
0

Maciej Los

WinForm[^] наследуется от Control, а Control содержит коллекцию Управления[^] ;)
Таким образом, вы можете перебирать коллекцию элементов управления. Но я должен вас предупредить! Некоторые элементы управления могут содержать другие элементы управления...