3
GUI 클래스가 있습니다. 나는 frmMain (form)을 GUI 컨스트럭터로 전달한다. 그럼 난 자식 컨트롤에 액세스 할 수있는 다음과 같은 방법이 있습니다 컨트롤을 통해 동적으로 루핑해도 아무 효과가 없습니다.
public void assignEvents(frmMain frm)
{
foreach (Control ctl in frm.Controls)
{
ctl.BackColor = Color.GreenYellow;
Log.AddData(ctl.Name.ToString() + ".Backcolor = " + ctl.BackColor.ToString(), 3);
}
}
내가 출력 (로그)의 새로운 업데이트 색상을 얻을 수를하지만 컨트롤에 영향을지지 않습니다 그들은 기본 색 여전히. 내가 뭘 잘못하고 있는거야?
편집 : 나는 다음과 같이 호출
: 귀하의 코멘트에
// GUI.cs
public class GUI {
public GUI(frmMain frm){
assignEvents(frm);
}
}
// frmMain.cs
public frmMain()
{
InitializeComponent();
gui = new M.Gui (this);
}
당신이 양식을 다시 그릴 필요가 있습니다 - foreach는 – Sayse
후에는 *하지 *'무효화를 (전화를해야한다')'frm.Invalidate을()' 컨트롤을 제대로 작성하면이 작업을 수행 한 후 필자는 폼을 생성하고 버튼, 레이블 및 TextBox를 삭제하고 위의 코드를 수행하는 버튼 핸들러를 추가하여이를 테스트했습니다. 단추를 클릭하면 배경색이 GreenYellow로 바뀝니다. –
Invalidate()가 필요하지 않으므로 BackColor 속성 setter가 이미이를 수행합니다. 메소드의 마지막 부분에이 라인을 추가하여 변경 사항을 확인하십시오 :'frm.Show();'Winforms는 많은 프로그래머가 객체 지향 프로그래밍에 대해 처음 배우는 곳입니다. –