ограничение доступа к форме с другой формы
Можно ли каким-то образом скрыть кнопки на форме которая открывается с другой формы (очень понятно, ага). Кароче есть форма со списком врачей. В системе два пользователя -Администратор и Врач. Администратору доступны кнопки редактирования, добавления и удаления (скрин 1).

Врачу же показывается та же самая форма, только со скрытыми и недоступными для нажатия кнопками добавления и удаления. Кнопка редактирования данных переименована в "Просмотреть"

Вот кусок кода:
private void DoctorFiles_Click(object sender, EventArgs e)
{
DoctorListForm doctorListForm = new DoctorListForm();
doctorListForm.AddDoctor.Enabled = false;
doctorListForm.AddDoctor.Visible = false;
doctorListForm.DeleteDoctor.Enabled = false;
doctorListForm.DeleteDoctor.Visible = false;
doctorListForm.EditDoctor.Text = "Просмотреть карточку врача";
doctorListForm.Show();
}
Здесь DoctorListForm - та самая форма которая на пикчах. AddDoctor, DeleteDoctor, EditDoctor - кнопки добавления, удаления, редактирования.
Вся соль в том, что я хочу как-то сделать, чтобы по нажатию кнопки "Просмотреть" врачу открывалось окно просмотра, только тоже со скрытыми кнопками сохранения и очистки полей, в общем ограничить доступ к ней (скрин формы внизу).

Была мысль сделать через потоки, но не втыкаю как нормально проверку на нажатие кнопки с другой формы сделать:
private void DoctorFiles_Click(object sender, EventArgs e)
{
DoctorListForm doctorListForm = new DoctorListForm();
doctorListForm.AddDoctor.Enabled = false;
doctorListForm.AddDoctor.Visible = false;
doctorListForm.DeleteDoctor.Enabled = false;
doctorListForm.DeleteDoctor.Visible = false;
doctorListForm.EditDoctor.Text = "Просмотреть карточку врача";
doctorListForm.Show();
//EditDoctorForm editDoctorForm = new EditDoctorForm(connection, fileId);
//editDoctorForm.Enabled = false;
if (doctorListForm.EditDoctor_Click(this, e) /*????*/)
{
new System.Threading.Thread(OpenDoctorFile).Start();
}
}
private void OpenDoctorFile()
{
EditDoctorForm editDoctorForm = new EditDoctorForm(connection, fileId);
editDoctorForm.button1.Enabled = false;
editDoctorForm.button1.Visible = false;
editDoctorForm.button2.Enabled = false;
editDoctorForm.button2.Visible = false;
editDoctorForm.Enabled = false;
editDoctorForm.Show();
Заранее спасибо за ответы!!
Ответы (1 шт):
Не нужно управлять контроллами одной формы из другой. Каждая форма должна по максимуму не зависеть от других по части данных и тем более визуализации.
Добавляешь перечисление типа:
enum FormMode{ BrowseMode = 1, EditMode = 2 }
Добавляешь свойство в открываемую форму:
private FormMode FormMode {get;set;} = FormMode.BrowseMode;Добавляешь его в конструктор
Прописываешь правила видимости/доступности контроллов в инициализации формы. Эти правила должны зависеть от FormMode.
При попытке открыть форму из нужного места или при нужном праве передаешь нужное значение в конструктор:
EditDoctorForm editDoctorForm = new EditDoctorForm(connection, fileId, formMode); editDoctorForm.Show();