2011-04-24 2 views
2

켜기 slider1_ValueChanged 뭔가를하고 슬라이더에 새 값을 설정하고 싶지만 slider1_ValueChanged를 다시 트리거하지 않으면 무한 루프가 발생할 수 있습니다.트리거하지 않고 C# 슬라이더의 값을 설정하는 방법 slider1_ValueChanged

속성을 설정하면 이벤트가 트리거되지 않지만 방금 Visual Studio Slider로 테스트하여 이벤트를 트리거한다고 생각했습니다. 플래그를 사용하는 것은 정말 못 생기고 복잡합니다. 나는 다른 이벤트를 사용하여 피하려고합니다.

답변

4

이 윈도우 형태의 일반적인 문제입니다. 이벤트 핸들러를 언 후크하고 변경 한 다음 이벤트 핸들러를 다시 연결해야합니다.

이벤트 처리기 후크/언 후킹 코드를 자체 함수로 이동하면 생성자 (또는 Loaded 이벤트) 및 ValueChanged 이벤트에서 연결할 수 있으므로이 작업을 쉽게 수행 할 수 있습니다.

+0

나는 실버 라이트이지만 괜찮은 제안을하고있다. – user310291

2

이 코드에 대해서는 잘 모르지만 코드에 속성을 설정하면 이 아닌 이벤트가 트리거됩니다. 그것은 않는 경우

는 그러나, 일반적인 기술은 제외 필드 보호하는 것입니다

private bool _settingValue = false; 

void valueChanged(object sender, ...) 
{ 
    if (! settingValue) 
    { 
     _settingValue = true; 
     try 
     { ... 
     } 
     finally { settingvalue = false; } 
    } 
} 
+0

그건 내가 생각한 것이지만 Visual Studio Slider로 테스트했을 때 이벤트가 트리거되었습니다. 플래그를 사용하는 것은 정말 못 생기고 복잡합니다. 나는 다른 이벤트를 사용하여 피하려고합니다. – user310291

+0

나는 깃발이 필요할 것이라고 확신합니다. 매우 일반적인 패턴입니다. –

+0

이 방법은 작업하고있는 자신의 컨트롤이지만 작동 방법을 알고 싶다면 프레임 워크에서 Slider 컨트롤을 사용하여이를 피하는 방법을 알고 싶어합니다. – slugster

관련 문제