ProKiLL
@ProKiLL
Системный администратор

Как правельно выполнить отрисовку компонентов на WinForm?

Доброго времени суток.
Допустим пользователю даны права только на 2 из 5 кнопок, как мне отрисовать их по "феншую"?
В настоящий момент реализована через костыль, через проверку свойств компонента с классом доступа
foreach (Control c in control.Controls)
            {
                foreach (svc.Level2 lev in listLevel2)
                {
                    if (c.GetType() == typeof(ThisGroupBoxMain))
                    {
                        ThisGroupBoxMain cTemp = (ThisGroupBoxMain)c;
                        if (cTemp.NumberFunction == lev.ИД)
                            c.Visible = true;
                    }
                    else
                        if (c.GetType() == typeof(ThisGroupBox))
                    {
                        ThisGroupBox cTemp = (ThisGroupBox)c;
                        if (cTemp.NumberFunction == lev.ИД)
                            c.Visible = true;
                    }
                    else
                        if (c.GetType() == typeof(ThisDataGridView))
                    {
                        ThisDataGridView cTemp = (ThisDataGridView)c;
                        if (cTemp.NumberFunction == lev.ИД)
                            c.Visible = true;
                    }
                    else
                        FindAllLevel2(c, listLevel2);
                }
            }

Но это ведет к дополнительной нагрузке т.к. при создании формы идет отрисовка всех компонентов, а потом через Visible устанавливаем какие компоненты оставить видимыми.

p.s. тапками не закидывать... :)
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Marat2785
Это ни какая не нагрузка, ты просто пишешь не сложно поддерживаемый код.
Тебе просто нужно отрисовать отдельные контролки и подставлять в зависимости от прав, тем самым у тебя не будет пробоем с компоновкой. Или сделай класс который будет определять поведение контролки и инициализируй его перед показом формы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы