2012-08-21 3 views
0

CompactFramework를 사용하여 WinCE 응용 프로그램을 만들고 있습니다.다른 클래스의 컨트롤 속성을 변경하십시오.

저는 Form1과 Class1을 가지고 있습니다. Form1에는 Class1에서 액세스해야하는 label1이 있습니다.

내가하려고하면 :

Form1.label1 

가 표시되지 않습니다, 나는 대중에게 수정 속성을 설정에도 불구하고.

라벨에 액세스하려면 어떻게해야합니까?

도움 주셔서 감사합니다.

+0

label1 속성의 코드를 게시하십시오. –

답변

1

를 반환하는 레이블 때문에이 코드를 확인 정적이 아닙니다.

var myForm = new Form1(); myForm.label1.Text = "hello";

분명히 응용 프로그램에서 양식을 만들었 기 때문에 클래스에서 새 양식을 만들고 싶지 않습니다.

따라서 양식을 수업에 전달해야합니다. 양식에 의해 클래스가 인스턴스화됩니까? 그렇다면 클래스에 "this"를 전달하여 인스턴스화 된 양식에 대한 참조를 보낼 수 있습니다.

하지만 실제로 유지 관리가 어렵 기 때문에이 작업을 원하지 않습니다. 클래스가 자신을 업데이트하기 위해 양식에 가입 할 수있는 일종의 이벤트를 발생하게하는 것이 더 좋을 것입니다.

+0

당신 말이 맞았습니다. 제 라벨을 업데이트 할 행사를 만듭니다. 당신의 도움을 주셔서 감사합니다! –

0

Form1을 Class1로 인스턴스화 한 다음이 인스턴스를 사용하여 Form1.label1을 설정할 수 있습니다. 이것은 우아한 해결책이 될 것입니다. , Form1 클래스에 속성 또는 메서드를 만들 수

public partial class Form1 : Form 
{ 

    public Label Label1 { get; set; } 

    public void Caller() 
    { 
     MyClass cls = new MyClass(); 
     cls.Form1 = this; 
     cls.DoSomeJob(); 
    } 
} 

public class MyClass 
{ 
    public Form1 Form1 { get; set; } 

    public void DoSomeJob() 
    { 
     Form1.Label1.Text = "Some text..."; 
    } 
} 
0

에 한번이 문제는 Form1에 클래스임을, 그리고 그 클래스의 인스턴스를 필요 LABEL1 객체에게

관련 문제