2011-09-10 3 views
0

새로운 인스턴스를 생성하지 않고 이리저리 두 개의 개별 창 형태 내가 여기서 뭘 시도하고있다 않습니다어떻게에 가서 Form1에

  1. 내가 두 개의 창 형태를 설정합니다. 나는 (보존 상태를 확인하기 위해)
  2. 나는 계속 내가 Form1에있는 버튼을 클릭하면 텍스트 상자 이제
  3. 에서 횡설수설을 입력 Form1에 모두와 텍스트 상자에 버튼을 추가, 그것을 숨기고 내가 가야을 Form2에게
  4. 을 보여줍니다 양식 2의 단추를 클릭하여 form1로 돌아가서 form2에서 새 개체를 만들 수 없습니다. 새 인스턴스와 texbox의 텍스트가 손실 될 것입니다.

그래서 어떻게 C# 창 폼에서 이동을 수행하고 상태를 유지합니까?

+0

당신이 "위로"라고 - 두 개를 반복적으로 전환하려고하거나 처음부터 두 번째를 "팝"합니다. 조금 논리 구조에 영향을 미칠까요 – Murph

답변

-1

설명하는 상황은 Binding을 사용하고 MVC 디자인 패턴을 사용하여보기에서 모델 (데이터)을 분리하는 것입니다.

WinForms의 MVCBinding 패턴에 대해 읽어 보는 것이 좋습니다.

+1

어쩌면 나는 당신을 정확하게 이해하지 못하고 있지만, 이것이 어떻게 바인딩과 관련이 있는지 보지 못합니다. –

1

form1.Hide()를 호출하면 텍스트 상자의 데이터가 다시 표시 될 때까지 보존됩니다. 문제는 form1을 숨기는 방법과 관련이 있습니다. 이 같은 yuor Form2의 ctor에서

0

선언 :

public class Form2 
{ 
    private Form form1 = null; 

    public Form2(Form1 frm1) 
    { 
     form1 = frm1; 
    } 

} 

그래서 당신은 통과 Form2 객체로 Form1 객체를 저장합니다. Form2이 끝나면 form1 인스턴스를 Form1으로 사용하여 표시 할 수 있습니다.

0

양식 개체 자체를 잡고있는 한이 작업을 올바르게 수행 할 수 있어야합니다.

즉, 변수를 사용하여 실제 양식 자체에 대한 참조를 유지 한 다음 ShowDialog가 반환 된 후에도이를 유지합니다 (모달로 표시하려는 경우).

일부 샘플 코드 :이처럼 그것을 할 경우 개별 형태의

private SampleForm m_oSamp1; 
    private SampleForm m_oSamp2; 

    private void SampleParentFunction() 
    { 

     if (m_bShowForm1) 
     { 
      m_oSamp1.ShowDialog(); 
      m_bShowForm1 = false; 
     } 
     else 
     { 
      m_oSamp2.ShowDialog(); 
      m_bShowForm1 = true; 
     } 

    } 

데이터는 100 % 독립적 보존이다. 클래스에서 : 유치원 1에서

0

Form2 frm2=new Form2(); 
그리고 버튼 : 형식 2에서

private void button1_Click(object sender, EventArgs e) 
{ 
    Hide(); 
    frm2.ShowDialog(); 
    Show(); 
} 

, 버튼 :

private void button1_Click(object sender, EventArgs e) 
{ 
    Hide(); 
} 
관련 문제