그룹 레이블 위에 확인란이있는 그룹 상자처럼 작동하는 사용자 정의 컨트롤을 개발했습니다. 일단 체크 박스가 선택 해제되면 그룹의 모든 컨트롤이 비활성화됩니다.WinForms 사용자 정의 컨트롤에서 이벤트를 노출하는 방법
필요할 경우 외부 조치를 수행 할 수 있도록 변경 사항 확인 조치를 표시해야합니다. 또한 Check 상태가 변경된 것으로 나타났습니다.
현재 컨트롤을 사용하면 그룹의 컨트롤 중 하나라도 포커스가 떨어지면 체크 상태가 변경됩니다.
변경된 체크 이벤트를 처리 할 때 외부 핸들러에 대한 이벤트를 다시 발생시켜야합니까? 정의
이벤트 :
/// <summary>
/// Event to forward the change in checked flag
/// </summary>
public event EventHandler CheckedChanged;
/// <summary>
/// Event to forward the change in checked state of the checkbox
/// </summary>
public event EventHandler CheckStateChanged;
이벤트 핸들러 코드 :
private void chkBox_CheckedChanged(object sender, EventArgs e)
{
// Disable the controls within the group
foreach(Control ctrl in this.Controls)
{
if(ctrl.Name != "chkBox" && ctrl.Name != "lblDisplay")
{
ctrl.Enabled = this.chkBox.Checked;
}
}
// Now forward the Event from the checkbox
if (this.CheckedChanged != null)
{
this.CheckedChanged(sender, e);
}
}
private void chkBox_CheckStateChanged(object sender, EventArgs e)
{
// Forward the Event from the checkbox
if(this.CheckStateChanged != null)
{
this.CheckStateChanged(sender, e);
}
}
올바른 모양입니다. 뭐가 문제 야? – asawyer
사용자가 필드를 입력하거나 변경하면 해당 그룹의 컨트롤이 비활성화됩니다. 그런 다음 그룹을 다시 활성화하고 다음 컨트롤로 이동해야합니다. – TeamWild