2012-01-28 1 views
0

내가이 창 있습니다 숨겨진 창을 닫는 방법 (WPF 응용 프로그램)? 내 응용 프로그램 (WPF)에서

public partial class Window1 : Window 지금은 XAML x:Class="WpfApplication1.Window1"

에서

, 난 창 1에 메인 전환하고 다시, 나는 미 Visibility.Hidden 및 Visibility.Visible을 숨기고 사용자에게 다시 표시합니다.

지금 내가하려고하는 것은 주 윈도우에서 테스트 버튼을 만드는 것입니다. Window1을 닫습니다. 이 창이 숨겨져 있지만 실제로 백그라운드에서 닫으려고합니다. 처음에 나는 단지 Window.Close();을 사용하지만 트릭을 수행하지는 않습니다.

그럼 올바른 방법으로 어떻게해야합니까? 미리 감사드립니다.

편집 1 - 더 명확하게 질문

내 메인 창에 번째 윈도를 열려면, 내가 가지고 그하는 뒤로 버튼이 창 1에

Window1 W1 = null; // Initialise Field. 
    public void CalcTabel_Click(object sender, RoutedEventArgs e) 
    { 
    if (W1 == null) 
    { 
    W1 = new Window1(); 
    W1.Hoofdmenu = this; 
    W1.checkLang(); 
    W1.Show(); 
    } 
    else 
    { 
    W1.checkLang(); 
    W1.Visibility = Visibility.Visible; 
    } 
    this.Visibility = Visibility.Hidden; 
    } 

이 부분을 사용 이것의 코드 스 니프 - 그것 (어디 "Hoofdmenu"우리는 기본 창) :

Hoofdmenu.updateStatistics(); 
Hoofdmenu.Visibility = Visibility.Visible; 
this.Visibility = Visibility.Hidden; 

하지만 다시, 이번에는 메인 윈도우에 서있을 때 (그래서 윈도우 1이 숨겨져있다) 나는 그 창을 닫고 싶다. 그러나 W1.Close()을 사용하는 것은 효과가없는 것 같다. 그래서 그 창 1을 닫는 방법을 찾고 있는데, 이 아니라 가시성이 바뀝니다.

편집 2 - 솔루션 그래서 작은 변화 this.W1.Close(); 사실 :)에서 일을 했더라도 W1.Close();는, 하지 일했다 사용

+0

왜 숨겨진 창이 닫히지 않는가? 당신이하고있는 일을 명확하게하기 위해 더 많은 샘플 코드를 게시 할 수 있습니까? 닫을 때 완료된 신호는 모두 닫힙니다. – Beachwalker

+0

window1 내에서 일부 단추를 클릭하여 모양을 변경합니다. 윈도우가 실제로 닫혀 있지 않다는 것을 확신 할 수 있습니다. 왜냐하면 다른 것들은 디폴트로 리셋되었을 것이고, 그렇게되지 않았기 때문입니다. 위의 내용을 좀 더 명확하게 편집 할 수 있는지 좀 더 자세히 알 수 있습니다. – Dante1986

+0

W1을 넣을 수 있습니까?Try Catch 블록에서 닫기()를 클릭하고 예외를 게시 하시겠습니까? – Paparazzi

답변

1

당신은 창을 초기화하기에 Form2를의 개체를 만들 수 있습니다 false에 대한 visiblity.

버튼의 클릭에 당신이

public partial class MainWindow : Window 
    { 
    private Window1 window2; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     this.window2 = new Window1(); 

     this.window2.Show(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     this.window2.Visibility = System.Windows.Visibility.Hidden; 
    } 
    } 

이 코드를 읽은 후 다시

+0

this.window2.Close(); 당신이 그것을 닫으려고하는 경우에도 작동합니다 – Mohit

+0

오, 잘 했어, 괜찮아요 – Mohit

+0

게시물을 편집하고, 향후 읽기 쉽도록 여기에 의견을 정리합니다 :) – Dante1986

0

그것을 볼 수 있도록 말을 simpliy 수 있습니다, 당신이 그것을 원하는 방식으로 가능하지 이잖아. window1 인스턴스는 로컬 객체입니다. 그래서이 방법을 사용하면 밖으로 뻗어 나갈 수 없습니다. 가장 좋은 방법은 this.close() 으로 window1에 닫기 버튼을 두거나 기본 창에 전역 인스턴스를 만든 다음 null이 아닌지 확인한 다음 닫습니다.