В моей программе много пользовательских контролей. Только один пользовательский элемент управления (по умолчанию) виден без ввода пароля.
Когда необходимо просмотреть другие элементы управления пользователя, пользователь должен ввести пароль, после чего сразу же должна появиться другая форма (кнопка, на которой пользователь нажал на вызов).
Для модели у нас есть 2 пользовательских элемента управления.
Первый открывается сразу при запуске, а чтобы открыть второй, нам нужно нажать на кнопку запуска, затем появится пароль и (если пароль правильный) будет открыта необходимая форма.
В последнем коде моя проблема.
У меня есть UserLeftPanel
, который всегда отображается как левая панель, и MainForm
(в коде Form1
).
В LeftUserPanel
много нажатых кнопок, Form1
высветит некоторые UserControl
.
Я не понимаю, как правильно получить метод из базового класса (Form1
).
Специально для моей программы:
И если вся пользовательская логика вызовов неверна, я буду рад увидеть правильную.
Каждый UserControl, отображаемый при нажатии, имеет эту конструкцию
private static UserMainPanel_Saved instanse;
public static UserMainPanel_Saved Instanse
{
get
{
if(instanse==null)
instanse =new UserMainPanel_Saved();
return instanse;
}
}
Код внутри UserLeftPanel
public delegate void Handler(object sender,EventArgs e, int control) ;
public event Handler ButtonClick;
protected void ButtonSavedMessages_Click(object sender, EventArgs e)
{
int formnumber = 0;
this?.ButtonClick(this, e,formnumber);// There are ButtonClick Event in Form1
}
Код внутри формы1
private void userLeftPanel1_Load(object sender, EventArgs e)
{
userLeftPanel1.ButtonClick += UserControl_ButtonClick;
UserControl_ButtonClick(sender, e, 0);//to display form without password by default
}
public void UserControl_ButtonClick(object sender, EventArgs e,int number)
{
UserControl con=null ;
if (number == 0)
con = UserMainPanel_Saved.Instanse;
else
{
if (UserPassword.Password)
{
if (number == 1)
con = UserMainDaybook.Instanse;
}
else
{
con = UserPassword.Instanse;
}
}
if (!MainPanel.Controls.Contains(con))
{
MainPanel.Controls.Add( con);
con.Dock = DockStyle.Fill;
con.BringToFront();
}
else
{
con.BringToFront();
}
}
Код внутри 'UserPassword'
private void button1_Click(object sender, EventArgs e)
{
Password = true;// In this place will be Some Logic
//And my idea is to Invoke there UserControl_ButtonClick( ... ) method, but I don't know how
}