Если я вас правильно понял, то вам нужно сделать if(userHasSomePermission) { CreateComponent };
вместо того, чтобы создавать его раньше, и если у пользователя нет разрешения, отключите / скройте его
Если это так, то это не так уж много науки, но это немного сложно.
Внутри вашего Form
конструктора у вас есть метод InitializeComponents()
, который хранится в вашем файле Form.Designer.cs
. Внутри этого файла вы создаете свои элементы управления.
Что вы можете сделать, это создать больше методов внутри вашего Form.cs
, например
private void CreatePanel1()
{
Panel p = new Panel();
p.Location = new Point(3, 3);
p.Size = new Size(50, 50);
p.BackgroundColor = Color.Black;
this.Controls.Add(p);
}
и затем внутри вашего конструктора вызовите его, если необходимо:
public Form()
{
InitializeComponents();
if( checkIfUserHavePermission )
CreatePanel1();
}
Таким образом, компоненты внутри нашего метода будут создаваться только при необходимости.
Хитрая часть этого в том, что you will not see components inside designer window
, поскольку внутри него нарисованы только те компоненты, которые находятся в Form.Designer.cs/InitializeComponents()
. Поэтому любое изменение, которое вы хотите внести, необходимо будет выполнить вручную с помощью кода.
В противном случае, если вы беспокоитесь о безопасности и не хотите просто скрывать / отключать какой-либо элемент управления, вы можете удалить его при необходимости.
Таким образом, вы можете использовать Tag
свойство каждого элемента управления и добавить, скажем, Admin_C
к каждому элементу управления Tag
, который предназначен только для администраторов, и затем сделать это:
public Form()
{
InitializeComponents();
if(userIsNotAdmin)
{
foreach (Control item in this.Controls)
{
if(item.Tag.ToString() == "Admin_C")
this.Controls.Remove(item);
}
}
}