2017-01-05 5 views
2

У меня есть кнопка на пользовательском элементе управления, которая по умолчанию не включена. Когда событие происходит в форме, я хочу, чтобы он мог включить кнопку. Я установил кнопку в основной форме, чтобы проверить это, и, похоже, она активирует кнопку UC, но она не отображается в приложении.Использование элементов формы для взаимодействия с UserControls

public partial class Form1 : Form 
{ 

    public Login ucLogin = new Login(); 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (ucLogin.loginEnabled) 
     { 
      MessageBox.Show("True"); 
     } 
     else 
     { 
      MessageBox.Show("False"); 
      ucLogin.loginEnabled = true; 
     } 


    } 
} 

Form.cs

И в UserControl для формы входа:

public partial class Login : UserControl 
{ 
    public bool loginEnabled 
    { 
     get { return ucBtn.Enabled; } 
     set { ucBtn.Enabled = value; } 
    } 
} 

Что странно, если я нажимаю форму button1, он будет говорить "Ложь", если я нажму он снова скажет «True», указывая, что делает изменение значения кнопки UC, но в приложении оно остается отключенным.

+0

попробуйте вызвать 'Application.DoEvents()' после изменения значения 'ucBtn.Enabled' –

+0

@FelixD. https://blogs.msdn.microsoft.com/jfoscoding/2005/08/06/keeping-your-ui-responsive-and-the-dangers-of-application-doevents/ plz не просто предлагают Application.DoEvents без упомянув об опасности – Steve

+0

@ Попробуйте это мне как «проблема начинающих» (без обид), поэтому я просто сохранил ее просто. –

ответ

0

Login Пользовательский элемент управления, который вы видите на форме, скорее всего не экземпляр, который вы устанавливаете loginEnabled.

+0

Да, ты был прав. Я создавал экземпляр нового экземпляра в Form.cs, а не ссылался на тот, который уже был помещен в форму. login1.loginEnabled - правильный способ сделать это :) – AlphaOmega