에 유래하는 새로운 오전으로 다른 질문 (뿐만 아니라 반환 할 필요를 제거해야하는 경우 사과 거의 모든 내 기능에서 문자열) 내 클래스 foo에 INotifyPropertyChanged를 구현하고 사용자에게 뭔가가 변경되었음을 알리는 데 필요할 때마다 Windows Form에 의해 잡히는 PropertyChanged 이벤트를 발생시킴으로써. 클래스
foo- 창 형태로
public class foo : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
public int bar;
private void NotifyPropertyChanged(string type) {
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(type));
}
}
private void test(){
bar = 1;
NotifyPropertyChanged("changed int");
}
}
:
public partial class GUI : Form {
foo fooinstance = new foo();
public GUI(){
InitializeComponent();
fooinstance.PropertyChanged += doEvent;
}
private void doEvent(object sender, PropertyChangedEventArgs e){
foo updated = sender as foo;
if (object.ReferenceEquals(e.PropertyName, "changed int")) {
ShowWhatChanged(updated.bar); //show on GUI
}
}
}
이 편집 : 더 우아하고 내가 사용 결국 청소기 방법이었다 콜백을 활용하기 . GUI는 인스턴스화시 foo에 함수 포인터를 전달하고 foo는 필요할 때마다 문자열을 다시 GUI로 전달하기 위해 델리게이트로 사용했습니다. 어떤 이벤트가 필요하지 :
는
public class foo {
public delegate void UpdateCallback(string msg);
private UpdateCallback _ucb;
public foo(UpdateCallback cb){
_ucb = cb;
}
private void test(){
if(_ucb != null) {
_ucb("Message Here");
}
}
}
public partial class GUI : Form {
public GUI(){
InitializeComponent();
foo fooinstance = new foo(showmessage);
}
private void showmessage(string msg){
//do whatever with the message
}
}
당신은 [INotifyDataErrorInfo]에 관심이있을 수 있습니다 (https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo (V = vs.110)에서 .aspx) –
@ScottChamberlain 저를 용서해주십시오. 저는 C#을 처음 접했습니다. 이것은 어떤 방식 으로든 윈도우 폼에 잡힐 수있는 이벤트를 일으킬 수있는 방법일까요? – Cobalt
예, 인터페이스를 구현 했으므로 인터페이스를 사용하여 오류가있는 속성에 대한 정보를 제공 할 수 있습니다. 그것을 구현하는 법을 배우기위한 구글 튜토리얼은 WinForms와 WPF와 통합되어 있습니다. –