积极答复者
WPF中Window.ShowDialog()

问题
答案
-
一般我都采用在一个窗口中打开一个Grid的形式模拟一个弹出式窗口。如果必须使用ShowDialog,通常我采用两种比较笨的方法解决这一问题的。
方法A
1. 首先建立一个程序共享Boolean变量(VB:Public Shared;C#:public static),不如暂时叫做A吧。并将A赋值为True。为了讨论方便假设有两个窗口,主窗口Win1和弹出窗口Win2。
2. 在ShowDialog弹出窗口Win2之前加上两句话。第一句把Me(也就是主窗口Win1).IsEnabled=False;第二句A=False。
(另一种方法是加一个<Grid Name="B" Background="Transparent" Panel.ZIndex="1000" Visibility="Hidden"/>,然后把Me.IsEnabled=False这句改成:B.Visibility=Windows.Visibility.Visible。)
3. 在Win1的Activated事件中加一个If判断。如果A=True,则将MeMe.IsEnabled=True(或B.Visibility = Windows.Visibility.Hidden)。
4. 在Win2的Closing事件中加一句,A=True。
方法B
1. 建立一个窗口(VB:Public W As New Window;C#:public Window W = new Window())。
2. ShowDialog时这样做:
VB:
Dim Win As New Win2
W = Win
Win.ShowDialog()
C#:
Win2 Win = new Win2();
W = Win;
Win.ShowDialog();
3. 在Win1的Activated事件中加一句:W.Activate()。- 已标记为答案 Jim Zhou - MSFTModerator 2009年8月18日 7:14
全部回复
-
一般我都采用在一个窗口中打开一个Grid的形式模拟一个弹出式窗口。如果必须使用ShowDialog,通常我采用两种比较笨的方法解决这一问题的。
方法A
1. 首先建立一个程序共享Boolean变量(VB:Public Shared;C#:public static),不如暂时叫做A吧。并将A赋值为True。为了讨论方便假设有两个窗口,主窗口Win1和弹出窗口Win2。
2. 在ShowDialog弹出窗口Win2之前加上两句话。第一句把Me(也就是主窗口Win1).IsEnabled=False;第二句A=False。
(另一种方法是加一个<Grid Name="B" Background="Transparent" Panel.ZIndex="1000" Visibility="Hidden"/>,然后把Me.IsEnabled=False这句改成:B.Visibility=Windows.Visibility.Visible。)
3. 在Win1的Activated事件中加一个If判断。如果A=True,则将MeMe.IsEnabled=True(或B.Visibility = Windows.Visibility.Hidden)。
4. 在Win2的Closing事件中加一句,A=True。
方法B
1. 建立一个窗口(VB:Public W As New Window;C#:public Window W = new Window())。
2. ShowDialog时这样做:
VB:
Dim Win As New Win2
W = Win
Win.ShowDialog()
C#:
Win2 Win = new Win2();
W = Win;
Win.ShowDialog();
3. 在Win1的Activated事件中加一句:W.Activate()。- 已标记为答案 Jim Zhou - MSFTModerator 2009年8月18日 7:14