2016-11-29 7 views
-1

У меня есть программа, и когда она запускается, на главной странице (frmHomePage) появляются игры для игры, а также кнопка для входа (FrmSignIn), если пользователь хочет сохранить данные. Если пользователь нажмет знак, появится новая модальная входная форма, но Домашняя страница никогда не закрывается (что я намерен держать открытым). Если сотрудник входит в игру, я хочу, чтобы некоторые кнопки стали видимыми, например «отчеты». Ответы, которые я получил, помогли мне сделать кнопку видимой, но она заставляет программу открывать новый экземпляр домашней страницы, который мне не нужен, так как у меня есть исходная домашняя страница, которая еще открыта. Есть ли способ сделать кнопку видимой после успешного входа в систему, не открывая новый экземпляр?Вызов кнопки из основной рабочей формы C#

frmSignIn, который проверяет, если журналы работника в.

if (ValidCredentials(txtUsername.Text, txtPassword.Text) == true && checkBoxEmployee.Checked == true && txtBoxEmpPin.Text.Equals(employeePin)) 
    { 
    this.DialogResult = DialogResult.OK; 
    this.Tag = _usersId; 
    this.Close(); 
    MessageBox.Show("You have successfully logged in as an employee."); 

    frmHomePage hp = new frmHomePage(); 

    hp.Button.Visible = true; // !!!! Does not work !!!! 
    } 
+3

Да, вы создали новую форму frmHomePage, которую вы никогда не показывали. Передайте ссылку из существующей формы. Кроме того, установка свойства DialogResult для чего-либо, кроме None, закрывает модальную форму, поэтому вы должны установить это значение последним и из-за этого вам не нужна строка 'this.Close();'. Какой смысл устанавливать свойство тега, если вы закрываете форму? – LarsTech

+0

Спасибо. Я попробую то, что вы сказали. –

+2

Есть ли причина, по которой вы хотите установить кнопку в вашем диалоговом классе? Я бы справился с этим в основной форме, в зависимости от DialogResult. – Fang

ответ

0

Создать свойство в frmSignIn, которые могут быть извлечены из frmHomePage.

Поскольку frmSignIn будет объявлен из основного окна, вы можете получить доступ к свойству (например, isSignedIn). Когда frmSignIn закрыт (с точки зрения frmHomePage/MainWindow вы можете сделать чек: if (isSignedIn) { button.IsVisible = true; }

Итак, используя свойство, как это вам не нужно, чтобы создать новый экземпляр frmHomePage, а модифицировать пользовательский интерфейс.

Смежные вопросы