2010-03-29 1 views
0

. 이것을 달성하는 방법? C# 2008, Windows Forms를 사용하여 전체 코드를 도와주세요.C#으로 유치원 1 년을 Form2의 컨트롤에 액세스하는 방법을 Form1</p> <p>에서 Form2를의 컨트롤에 액세스 할 수 그리고 또한 내가 Form1에 자체 Form2를 컨트롤에 대한 이벤트를 만들고 싶습니다 어떻게 2,010분의 2,008

+2

당신은 달성하고자하는 것을 보여주지 않고 완전한 코드를 요구함으로써 많은 반응을 얻지 못할 것이라는 것을 알고 있습니까? 우리는 이것보다 훨씬 더 많은 정보와 당신이 뭔가를 시도한 단서를 필요로합니다. – ZombieSheep

답변

0

양식 1에서 양식 2를 열고 form.eg에 액세스 할 때 사용하는 변수를 사용하십시오. 형태로

Form2 secondForm = new Form2(); 
Form2.Show(); 

secondForm.somePublicControl.Text = "test"; 
MessageBox.Show(secondForm.somePublicVariable); 
+0

우선 secondform에 액세스 할 수 없습니다. 두 번째 폼의 컨트롤에 액세스 할 수 없습니다. – venkat

+0

어떤 오류 메시지가 나타 납니까? 두 번째 양식 컨트롤이 공용이거나 상속 수정 자 (개인은 아님)입니까? 또한 폼의 컨트롤에 액세스하기 전에 두 번째 폼에서 InitialiseComponent를 호출했는지 확인하십시오. –

0

1 당신이 정말 다른 형태의 컨트롤을 액세스 할 또는 다른 형태로 사용 데이터 값의 변화에 ​​반응 싶은가? 후자의 경우는 컨트롤을 글로벌 모델 데이터에 바인딩하고 INotifyPropertyChanged 인터페이스를 사용하여 데이터 변경을 신호/수신함으로써 구현할 수 있습니다.

1

좋아, 그럼 당신은 frmMain과 frmSettings 있다고 가정 해 봅시다. frmSettings가 frmMain의 레이블을 업데이트하도록합니다. 여기에 내가 어떻게 할 것인가.

1 단계 frmMain.Designer.cs에서 레이블 (또는 다른 컨트롤) 범위를 public으로 변경합니다.

예.

public System.Windows.Forms.GroupBox groupBox2; 
public System.Windows.Forms.Label label8; 

이제는 쉬웠습니까?

2 단계. frmSettings에서 이것을 선언하십시오.

protected frmMain frmMain; 

    public frmSettings(frmMain frmMain) 
    { 
     this.frmMain = frmMain; 
    } 

이제 재미있는 것들을 변경하십시오. 마찬가지로 :

frmMain.label8.Text="Changed from frmSettings"; 
1

가장 좋은 방법은 당신이 그 컨트롤의 속성을 사용하면 아무도 정말 양식의 원하는 동작을 방해 할 수 없도록 노출 할 속성을 설정하려고합니다.

public partial class SecondaryForm { 
    // Let's suppose you have put a TextBox control in design mode named txtCusomerName. 
    public string CustomerName { 
     set { 
      this.txtCustomerName.Text = value.Trim(); 
     } 
    } 
} 

public partial class MainForm { 
    // Suppose you have a button to show a form with the customer name. 
    private btnShowCustomerName_Click(object sender, EventArgs e) { 
     SecondaryForm f 
     f.CustomerName = "Acme inc,"; 
     f.ShowDialog(); 
    } 
} 

관련 문제