특정 변수의 값이 바뀔 때 버튼의 가시성을 토글하고 싶습니다. 값이 변할 때 자동으로 실행되는 변수에 대리자를 연결하는 방법이 있습니까?C#에서 변수 값이 변경되면 어떻게 코드를 실행할 수 있습니까?
답변
아니요, C#에서 오버로드 할당 연산자와 같은 작업을 수행 할 수 없습니다. 변수를 속성으로 변경하고 메서드를 호출하거나 설정자에서 이벤트를 위임하거나 발생시키는 것이 가장 좋습니다.
private string field;
public string Field {
get { return field; }
set {
if (field != value) {
field = value;
Notify();
}
}
}
이것은 속성 변경을 추적하기 위해 많은 프레임 워크에 의해 (WPF DependencyProperty
시스템 등) 이루어집니다.
그렇게 할 방법이 없습니다. 변수는 기본적으로 응용 프로그램이 기록하는 메모리의 장소입니다.
대신 속성 사용 : 당신은 (변수 임) 모델의 GUI에 대한 참조가 직접 setter 메소드의 GUI 변경을 수행하거나, 당신이 당신의 GUI 관찰 할 하나
string myVariable;
public string MyVariable
{
get
{
return myVariable;
}
set
{
myVariable = value;
MyVariableHasBeenChanged();
}
}
private void MyVariableHasBeenChanged()
{
}
작은 관찰 일 경우 변경 한 후에 "MyVariableHasBeenChanged"를 호출하는 것이 좋습니다. 그렇게하면 메서드에서 무언가를 수행 할 수 있고 할당에 예외가 발생하는 경우에 대처할 수 있습니다. –
확실히 더 나은 (그리고 아마도 유일한 유용한 방법). 감사. – weiqure
을 관측자를 통해 모델을 관측하고 관측 가능한 모형을 세터의 관측자에게 알려야합니다. 전자는 결국 스파게티 코드로 이어질 것입니다. 모델과 뷰 사이에 더 많은 직접 링크가 추가되므로 사내 도구와 간단한 프로그램에만 사용해야합니다.
Observer pattern. 여기에 another reference이 있습니다.
이 문제에 대한 해결책으로 옵저버 패턴에 대해 부정적 투표를 정당화 할 수 있습니까? –
당신이 틀렸고 유권자가 머리를 숙이 게해야합니다. 가장 단순한 형태의 옵저버가 올바른 패턴입니다. WPF가 사용하는 것이므로 실제로 WPF에 '무엇이 변경되었는지'를 알려줄 필요가 있습니다. 나는 너를 구제하기 위해 +1 할 것이다. –
Downvote는 링크 전용 답변이기 때문에 의심 스럽습니다. – Blorgbeard
데이터 바인딩 : in WPF을 Windows Forms에 사용할 수도 있습니다. 이를 통해 객체의 속성 인 과 그 반대로에 따라 GUI의 상태를 변경할 수 있습니다.
- 1. 셀이 변경되면 일부 VBA 코드를 어떻게 실행합니까?
- 2. ItemsSource가 변경되면 어떻게 알 수 있습니까?
- 3. 브라우저에서 클라이언트 측 코드를 어떻게 실행할 수 있습니까?
- 4. 함수를 작성하지 않고 pl/pgsql 코드를 어떻게 실행할 수 있습니까?
- 5. 캐시로 인해 실행 시간에 변동이없는 코드를 어떻게 실행할 수 있습니까?
- 6. web2py : 컨트롤러를 호출하기 전에 어떻게 코드를 실행할 수 있습니까?
- 7. 스냅인을로드 할 때마다 초기화 코드를 어떻게 실행할 수 있습니까?
- 8. "one"값이 변경되면 jQuery가 발생합니다.
- 9. "with"블록에서 조건부로 코드를 실행할 수 있습니까?
- 10. 초당 한 번 코드를 실행할 수 있습니까?
- 11. J # 코드를 JVM에서 실행할 수 있습니까
- 12. vba 매크로에서 C# 코드를 실행할 수 있습니까?
- 13. 페이지가 변경되면 ASP.NET MVC 쿠키 값이 손실됩니다.
- 14. 장치에서 코드를 실행할 수 없습니다.
- 15. 주 프로그램의 값이 변경되면 GUI에서 항목의 색을 어떻게 변경합니까
- 16. 웹 서버없이 PHP를 어떻게 실행할 수 있습니까?
- 17. 값이 숫자인지 어떻게 확인할 수 있습니까?
- 18. NSTextField는 값이 변경되었음을 어떻게 알 수 있습니까?
- 19. 구조체의 값이 변경되었는지 어떻게 확인할 수 있습니까?
- 20. 값이 jquery/javascript로 변경되면 업데이트 하시겠습니까?
- 21. 값이 변경되면 QTableWidget에있는 QComboBox의 이전 값을 가져옵니다.
- 22. Control.PreferredSize가 변경되면 어떻게 감지합니까?
- 23. C에서 "변수 보호"란 무엇입니까? 어떻게 작동합니까?
- 24. PHP 스크립트가 exit() 전에 공통 코드를 실행할 수 있습니까?
- 25. 어떻게 병렬 작업을 파이썬에서 실행할 수 있습니까?
- 26. Bash 스크립트에서 AWK를 어떻게 실행할 수 있습니까?
- 27. WindowsXP에서 "tar"명령을 어떻게 실행할 수 있습니까?
- 28. 어떻게 배치 파일을 자동으로 실행할 수 있습니까?
- 29. 시뮬레이터에서 Apple Storekit을 어떻게 실행할 수 있습니까?
- 30. 테이블 트리거에서 * .exe를 어떻게 실행할 수 있습니까?
Mehrdad에게 감사드립니다. – Rohit
이 작업을 수행하는 가장 좋은 방법은'INotifyPropertyChanged' 인터페이스입니다. –