2017-01-05 2 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을에서

: 나는 양식 Button1을 클릭하면 내가 클릭하면, 그것은, "거짓"말할 것입니다 이상한 무엇

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

다시 "true"라고 말하면 이 UC 버튼의 값을 변경하지만 응용 프로그램에서는 비활성화 된 상태로 남아 있음을 나타냅니다.

+0

'ucBtn.Enabled'의 값을 변경 한 후에'Application.DoEvents()'를 호출하십시오 –

+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