2012-07-20 5 views
0

저는 Form1을 가지고 있고 다른 클래스에서는 일부 처리를하고 있습니다. Form1 textBox9에 정보를 출력하는 적절한 방법은 무엇입니까?다른 클래스의 Form에 데이터를 출력하는 적절한 방법은 무엇입니까

이것은 내가하는 방법이지만 양식이 활성화 된 경우에만 부분적으로 만 작동합니다.

var form = Form.ActiveForm as Form1; 
if (form != null) 
{ 
form.updateLabel("DBadd[" + counter + "]" + NAME2); 
} 

이 내를 Form1에 가지고있다 :

는 내 수업 시간에 무엇을 가지고

delegate void updateStatus(String value); 
    public void updateLabel(String value) 
    { 
     if (textBox9.InvokeRequired) 
     { 
      updateStatus del = new updateStatus(updateCodemicroLabel); 
      textBox9.Invoke(del, new object[] { value }); 
     } 
     else 
     { 
      { 
       textBox9.Text = value; 
      } 
     } 
    } 

이 내 클래스를 호출하는 방법입니다

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     new className().runTask(); 
    } 
+4

가 참고로,'textBox9' 끔찍한 (기본값) 이름입니다. 의미있는 이름으로 컨트롤 이름을 변경해야합니다. – ThiefMaster

+1

첫 번째 블록의 "클래스"는 어떻게 인스턴스화됩니까? –

답변

1

Form.ActiveForm을 사용하는 대신 whatever.updateLabel()을 0123으로 호출 할 수 있도록 인스턴스를 클래스에 전달해야합니다.이 인스턴스입니다.

0

데이터를 반환하는 올바른 방법은 작업자 클래스에 메서드를 구현하고 Form의 멤버 변수 또는 구성 매개 변수에서 반환 값을 가져 오는 것입니다. 클래스에 의해 실행되는 작업에 따라 작업은 백그라운드 작업자 스레드에서 실행하고 Form의 멤버 변수를 업데이트해야 할 수 있습니다. 백그라운드 스레드에서 작업을 실행하는 방법에 대한 자세한 내용은 MSDN을 참조하십시오.

참조 & 유용한 페이지 :

관련 문제