Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / использовать указаный клас для всех елементов в рамках функции / 8 сообщений из 8, страница 1 из 1
13.05.2014, 11:51
    #38639573
SNenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
Здраствуйте.
Есть много елементов, которым надо дописать "snr." . (snr.tbSTBScan_.BackColor = Color.White;)
В какомто язике программирования встречал With , который позволял использовать указаный клас для всех елементов в рамках функции With . Как это сделать в c#?
Есть:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
                MAC = "";
                CHIP = "";
                HDD = "";

                tbHDCPScan.Text = "";

                tbSTBScan_.Text = "";
                tbSTBScan_.BackColor = Color.White;

                tbMACScan_.Text = "";
                tbMACScan_.BackColor = Control.DefaultBackColor;
                tbMACScan_.ReadOnly = true;

                tbCheapID_.Text = "";
                tbCheapID_.BackColor = Control.DefaultBackColor;
                tbCheapID_.ReadOnly = true;

                panel1_.BackColor = Control.DefaultBackColor;
                panel2_.BackColor = Control.DefaultBackColor;
                panel3_.BackColor = Control.DefaultBackColor;



Хочу:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with(snr)
{
                MAC = "";
                CHIP = "";
                HDD = "";

                tbHDCPScan.Text = "";

                tbSTBScan_.Text = "";
                tbSTBScan_.BackColor = Color.White;

                tbMACScan_.Text = "";
                tbMACScan_.BackColor = Control.DefaultBackColor;
                tbMACScan_.ReadOnly = true;

                tbCheapID_.Text = "";
                tbCheapID_.BackColor = Control.DefaultBackColor;
                tbCheapID_.ReadOnly = true;

                panel1_.BackColor = Control.DefaultBackColor;
                panel2_.BackColor = Control.DefaultBackColor;
                panel3_.BackColor = Control.DefaultBackColor;
}


Спасибо!
...
Рейтинг: 0 / 0
13.05.2014, 12:16
    #38639606
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
SNenkoКак это сделать в c#?
Никак.
...
Рейтинг: 0 / 0
13.05.2014, 15:14
    #38639883
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
Arm79SNenkoКак это сделать в c#?
Никак.

На самом деле вопрос некорректен.
Как понимаю, ТС имел ввиду не класс, а свойство класса для всех "элементов".



Делается достаточно просто - если есть общее открытое свойство BackColor - то у всех элементов должен быть один общий предок.

Соответственно рефлексией вытащить всех мемберов у которых общих предок и задать нужное значение.
Можно добавить фильтрацию некую, если она необходимо по каким-нить признакам.

Но вопрос в чем - стоит ли овчинка выделки? Рефлексия, как правило - плохо.
...
Рейтинг: 0 / 0
13.05.2014, 15:32
    #38639901
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
SNenkoЕсть много елементов, которым надо дописать "snr." . (snr.tbSTBScan_.BackColor = Color.White;)
Это можно сделать с помощью column edit режима

http://msdn.microsoft.com/en-us/library/vstudio/729s2dhh(v=vs.100).aspx To select a rectangle of text

Hold down the ALT key, press down on the left-click button of your mouse, and then drag the cursor over the text to select.

—or—

Hold down the SHIFT+ALT keys and press any Arrow key.
...
Рейтинг: 0 / 0
13.05.2014, 17:41
    #38640106
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
Заменить в режиме регулярного выражения:
...
Рейтинг: 0 / 0
14.05.2014, 14:34
    #38641038
SNenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
LameUser,
Вы правы. Код не корректен..
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
изминил структуру кода..

Сейчас это процедура самого элемента "snr"

        public void ClearAllTextboxes_Block()
        {
            MAC = "";
            CHIP = "";
            HDD = "";

            default_ControlTextBox(panel0, tbHDCPScan, false, Color.White);

            default_ControlTextBox(panel1, tbSTBScan, false, Color.White);

            default_ControlTextBox(panel2, tbMACScan, true);

            default_ControlTextBox(panel3, tbCheapID, true);

        }


спасибо!
...
Рейтинг: 0 / 0
14.05.2014, 15:26
    #38641151
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
SNenko,
ну тут же очевидно, что свойство цвета объективно принадлежит базовому типу контрола, осталось применить
просто рекурсию ко все элементам формы, и если зная какие то ограничения для каждого меняемого элемента изменить у него цвет

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 static void Rec<TElement>(IEnumerable elements, Func<TElement, IEnumerable> secondLevelEments,Action<TElement> action)
        {
            foreach (var element in elements)
            {
                action((TElement) element);
                Rec(secondLevelEments((TElement)element), secondLevelEments, action);

            }
        }
........................

 Rec<Control>(Controls,c=>c.Controls, t =>
                                                      {
                                                          if (t is TextBox&&t.Parent is Panel)
                                                          {
                                                              t.BackColor = Color.Wheat;
                                                          }
                                                      });
...
Рейтинг: 0 / 0
15.05.2014, 10:00
    #38641808
SNenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использовать указаный клас для всех елементов в рамках функции
Где-то в степи,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
        public void ClearAllTextboxes_Block(bool isCleanHDCPScan = false)
        {
            MAC = "";
            CHIP = "";
            HDD = "";

            if (!isCleanHDCPScan)
                default_ControlTextBox(tbHDCPScan, false, Color.White);

            default_ControlTextBox(tbSTBScan, false, Color.White);

            default_ControlTextBox(tbMACScan, true);

            default_ControlTextBox(tbCheapID, true);

        }

        static void default_ControlTextBox(TextBox tb, bool ReadOnly, System.Drawing.Color color, bool isFocus = true, string text = "")
        {
            tb.Text = text;

            if (isFocus)tb.Focus();
            tb.BackColor = color;

            Panel p = (Panel)tb.Parent;

            tb.ReadOnly = ReadOnly;
            p.BackColor = Control.DefaultBackColor;
        }
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / использовать указаный клас для всех елементов в рамках функции / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]