에서 여러 유형의 여러 컨트롤에 대한 공통 이벤트 처리기 여러 필드 (텍스트 상자, 확인란, 숫자 상향 조절)로 양식을 만듭니다.C#
양식로드시 데이터베이스를 가져 와서 기존 데이터로 채 웁니다.
사용자가 필드를 변경하면 해당 정보를 데이터베이스로 보내야합니다.
는 지금, 나는 각각의 제어를위한 하나의 이벤트가 (3 checkedChanged
, 4 TextChanged
, 3 ValueChanged
2 SelectedIndexChanged
).
bool
배열을 가져 왔는데, 변수를 True로 설정하고 배경색을 변경합니다. 사용자가 저장을 클릭합니다 때,이 배열을 분석하고 새 값으로 데이터베이스에 명령을 보내드립니다
bool[] bChangedValues = new bool[12];
private void tbName_TextChanged(object sender, EventArgs e)
{
tbName.BackColor = CHANGED_COLOUR;
// Set the flag to true to indicate value is changed
bChangedValues [Name_Index] = true;
}
private void chIEnable_CheckedChanged(object sender, EventArgs e)
{
chIEnable.BackColor = CHANGED_COLOUR;
// Set the flag to true to indicate value is changed
bChangedValues [IEnable_Index] = true;
}
등등 ....
나는 이것이 나쁜 구현이라는 것을 알고 있습니다. 일반적인 이벤트 처리기가 훨씬 쉬울 것입니다. 나는 this 대답을보고 내 문제에 적합하다고 생각했습니다. 그렇다면 sender
에서 BackColor
등의 속성에 어떻게 액세스 할 수 있습니까?
서로 다른 컨트롤 유형의 이벤트 처리기를 하나로 묶고 해당 이벤트 처리기에서 컨트롤의 속성에 액세스하는 방법이 필요합니다. 당신은 당신이 너무 bChangedValues
을 설정할 수, 제어의 Tag
에 인덱스의 이름을 추가하면 내가 C#을 사용하고
는
송신자를 '제어'유형으로 전송합니다. ((제어) 발신자) .BackColor'. Thats 컨트롤은'Control'에서 상속 받고'Control'는'BackColor' 속성을 갖습니다. – Fabio
@Fabio 감사합니다! 완벽하게 작동! 이것이 내가 StackOverflow를 좋아하는 이유입니다 :-) – Swanand