2014-02-20 2 views
1

필자가 입력 한 정보로 이전 양식으로 돌아가려고하지만 이전 단추를 클릭하면 이전 양식이 새로 생성됩니다. 다음과 이전 모두에 대한 내 코드를 heres. 이전 양식을 새로 만들지 않고 이미 입력 한 정보로 이전 양식으로 돌아갈 수있는 방법이 있습니까? 감사.이전 양식으로 이동

//moves to next form 
    public void next() 
    { 
     Form3 f4 = new Form3(); 
     f4.Show(this); 
     Hide(); 
    } 

    //Moves to previous form 
    public void Back() 
    { 
     Form1 f1 = new Form1(); 
     f1.Show(this); 
     Hide(); 
    } 

답변

0

문제 : 당신은() 메소드는 그래서 메모리에 새 Form1 인스턴스를 만들고을 보임 값 가득 기존 Form1을 표시하기보다는 당신에게 동일을 표시 eachtime으로 돌아 가기 Form1의 새로운 인스턴스를 생성하는 (이미 숨겨져 있음) 메모리에서 가져옵니다.

솔루션 : 당신은 메모리에서 이미 사용할 수있는 필요한 양식을 얻을 수 Application.OpenForms[]를 사용할 수 있습니다.

이 시도 :

//Moves to previous form 
public void Back() 
{ 
    Form myform = (Form1)Application.OpenForms["Form1"]; 
    myform.Show(); 
} 
0

OU는 ShowDialog를을 (사용 형태 F4를 보여줄 수) 대신 쇼(). 이렇게하면 f2가 닫힌 후에 f1을 다시 실행하게됩니다.

0
In Form2 : 
private void button1_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    formRegistration.ShowDialog(); 
    // We get here when formRegistration's DialogResult gets set 
    this.Show(); 
} 
0

@ SUudhakar와 동의하십시오. 대안 : 양식 닫는 이벤트 핸들러에서

Form storedPrev; 

public Form1(Form prev) 
{ 
    this.storedPrev = prev; 
} 

이 코드를 추가합니다 : 또한

public void next() 
{ 
    Form3 f4 = new Form3(this); 
    this.Hide(); 
    f1.BringToFront();   
    f4.Show(); 

} 
public void Back() 
{ 
    Form1 f1 = new Form1(this); 
       this.Hide(); 
       f1.BringToFront(); 
       f1.Show(); 
} 

는 모든 형태의 클래스와 생성자에 무언가를 추가

storedPrev.Show(); 
관련 문제