WPF中兩個視窗的互斥

2022-03-26 07:16:30 字數 1461 閱讀 5624

這裡所講的互斥是兩個視窗不同時存在,開啟一,只顯示一;點一相關按鈕顯示二,關閉一;關閉二,顯示一。

視窗一: history

winresult winchoice = new winresult();

winchoice.owner = this;

winchoice.isshow = true;

winchoice.activate();

winchoice.update();

history.hide();

視窗二:

if (this.owner != null&&owner.name=="history")

以下是一些視窗常見問題:

1,如果彈出窗體(比如subwindow)僅僅是呼叫show方法,並且沒有設定其owner屬性:

classrootwindow 

}

那麼彈出窗體(subwindow)和源窗體(如rootwindow)沒有任何層級關係,也就是說不會以模態方式呈現(subwindow不會阻擋使用者 對rootwindow的操作)。subwindow在show出來時在rootwindow的上方,但使用者可以通過滑鼠點選等方式將 rootwindow帶到subwindow前方來而遮蓋rootwindow的內容,也就是說,享有使用者焦點的視窗將被帶到最前方。並且 rootwindow和subwindow的最小化與還原操作互不影響。

2,如果彈出窗體(比如subwindow)呼叫show方法,並且設定了其owner屬性:

classrootwindow 

}

那麼彈出窗體(subwindow)和源窗體(如rootwindow)將有著父子關係,也就是說,彈出窗體將永遠在源窗體的上方,但並不是模式的,使用者可以操作源窗體,當源窗體被最小化或還原的時候,彈出窗體也將隨著最小化和還原,反之不成立。

3,如果彈出窗體(subwindow)以showdialog的方式顯示,並且沒有設定其owner屬性:

classrootwindow 

}

彈出窗體將以模式的方式出現,但沒有父子關係,彈出窗體將阻止使用者對源窗體的操作,但點選源窗體時彈出窗體不會出現閃動效果。彈出窗體最小化時,源窗體會 隨之最小化,但還原操作卻不可以(很奇怪)。這裡有乙個值得注意的問題是:在此模式下,如果彈出窗體不在工作列顯示 (showintaskbar==false),而源窗體顯示在工作列,使用者的操作可能會導致彈出視窗被隱藏在源視窗背後而沒辦法切換出來(除非使用 alt+tab)。

4,如果彈出窗體(subwindow)以showdialog的方式顯示,並且設定了其owner屬性:

class rootwindow 

彈出窗體將以模式的方式出現,並且有父子關係,彈出窗體將永遠處於源窗體上方,彈出窗體將阻止使用者對源窗體的操作,並且點選源窗體時彈出窗體會出現閃動效果。彈出窗體最小化或還原時,源窗體會隨之最小化或還原

Qt中兩個視窗相互操作

qt中兩個視窗相互操作,舉乙個栗子就是兩個視窗相互關閉 視窗1中的pushbutton關閉視窗2 視窗2中的pushbutton關閉視窗1 qt中的視窗都是乙個乙個的類,所以最開始就想到了使用類的操作方法,即使用指標 否則兩個類無限呼叫 如下圖 但是,這種方法只能用於同乙個函式下,也就是都得在mai...

wpf中的視窗概念

wpf的視窗概念。就相當於2.0中winform中乙個介面而已 在wpf中視窗就是乙個window類。具有圖形介面 這個視窗具有豐富的屬性來設定自己的顯示樣式和外觀 視窗也有自己的生命週期,如圖 不同的週期有不同的事件和方法可以處理很多事情。視窗啟用就開始載入,然後是內容呈現。關閉視窗的時候會先引發...

兩個視窗之間資訊的傳遞 C

下面有個例子 我要將 form1 中的 textboxinform1 的內容讀到 form2 的 textboxinform2 中 我有兩種方法介紹給大家,隨便看看吧!第一種,先在 from2中新增乙個全域性變數form1msg,然後寫乙個得到from1msg的方法,如下 private strin...