2010-01-21 2 views
2

onCheck 이벤트를 발생시키지 않고 선택란 값을 변경하고 싶습니다. 등록 취소, 값 변경 후 다시 등록 같은 작업이 있다는 것을 알고 있습니다. 플래그를 기반으로하는 이벤트 메소드 내부에서 메소드 문 또는 다른 모든 해결 방법을 건너 뛰거나 평가합니다. 나는 더 깨끗한 방법을 찾고있다.이벤트를 발생시키지 않고 체크 박스 값을 변경하십시오.

+3

이 윈폼 또는 웹 양식인가? 대답은 각 경우마다 상당히 다릅니다. – Oded

+0

이 기능이 필요한 경우 아마도 못생긴 디자인이 필요할 수도 있고 필요한 것보다 더 어려운 솔루션을 만드는 것일 수도 있습니다. 왜 그렇게하고 싶어하는지 더 이상 대답하지 않아도되는 이유를 알려주십시오. – Stormenet

+0

친애하는 Stormenet, 내가 체크 박스를 선택했을 때 특정 유효성 검사를 수행하고 싶습니다. 사용자가 진행하지 않기로 결정한 후에는 값을 재설정해야합니다. – Ravisha

답변

3

CheckBox 클래스에서 파생되고 CheckBox.OnCheckedChanged Method을 재정의하고 기본 클래스의 OnCheckedChanged 메서드를 호출하지 않아도 이벤트가 발생하지 않습니다. 이벤트 발생 여부를 나타내는 속성을 가질 수도 있습니다.

+0

글쎄 캔트, 코드베이스는 이미 herculean 작업이 될 것입니다 많은 checkboxes.changing을 사용했습니다. 이것은 내가 문제를 만났을 때 생각했다.하지만 실현 가능하지 않다. – Ravisha

+0

이것은 합리적으로 들리며 웹 폼과 Win 폼 모두에서 작동한다. – naivists

+0

@Ravisha, 왜? 그것은 모든 파일에서 단지 문자열 교체입니다! – naivists

5

나는 이것이 오래된 스레드라는 것을 알고 있지만 주어진 답은 너무 많은 문제입니다.
OnCheckedChanged 이벤트를 거의 사용하지 않습니다. 대신 OnMouseUp을 사용하는 것을 선호합니다. 그런 식으로 이벤트를 트리거하지 않고 시작시 원하는대로 확인란이나 라디오 단추를 설정할 수 있습니다. 모르기 때문에 mouseUp은 다음과 같이 발생 후 onMouseUp에 이벤트 체크

는 상자가 선택되어 있는지 확인합니다 .. 나는 오랫동안 이런 식으로 해왔

private void chkBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    if (chkBox1.Checked) 
    { 
     // do some stuff if the box is checked after a mouseup on it 
    } 
} 

. OnChanged 이벤트에 플래그 변수를 넣어서 상자 상태를 설정하는 동안 아무 것도하지 않도록 함수에 알리는 것은 번거로운 작업입니다. MouseUp을 사용하는 것이 더 쉽습니다. GC

+7

사용자가 스페이스 바를 사용하여 체크 된 상태를 토글 할 때 사용하는 OnKeyUp 핸들러를 추가합니까? –

0

제거 및 재 할당 핸들러 :

myCheckbox.Checked -= myCheckbox_Checked; 
myCheckbox.IsChecked = true; 
myCheckbox.Checked += myCheckbox_Checked; 
관련 문제