wpf关于ShowDialog的奇怪问题。

uvvvw 2014-03-10 06:36:36
窗体window1,上面有个按钮,点击就会弹出window2,在window2上操作后,才可以继续进行window1上的操作。

代码如下:
private void button1_Click(object sender, EventArgs e)
{
window2 w=new window2();
w.Owner = this;
w.Topmost=true;
w.ShowDialog();

其它代码
......

}

现在的问题是:
在绝大多数客户电脑上运行都没有问题。但在极少数的xp系统上,会出来window2显示不出来的情况。
然后window1,window2都点击不了,在任务栏中确有这两个窗体,导致软件不得不强制关闭。不知道这是什么情况?

也尝试过将topmost=true取消,但问题依旧。如果不设置owner,能弹出,但会出现window2已经弹出,但却能点到window1的情况。(从任务栏中选择)

哦,对了,用的是.net framework4 换framework版本,仍然如此。

求解。



...全文
591 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小猪八Q 2014-03-18
  • 打赏
  • 举报
回复
使用ShowDialog,即使不设置Owner也不可以点击逻辑上的父窗体吧
Just已存在 2014-03-17
  • 打赏
  • 举报
回复
我觉得是系统兼容性的问题
uvvvw 2014-03-12
  • 打赏
  • 举报
回复
回楼上。照这样试了,问题依旧。
Bonjour-你好 2014-03-10
  • 打赏
  • 举报
回复
试试这样会不会有改善:
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Window w2 = new Window
            {
                Width = 300,
                Height = 300,
                WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen
            };
            w2.GotKeyboardFocus += (s2, e2) => {
                w2.Topmost = true;
            };
            w2.Owner = Window.GetWindow(this);
            w2.ShowActivated = true;
            w2.ShowInTaskbar = false;
            w2.ShowDialog();
        }

        private void window1_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            Window w1 = sender as Window;
            if (w1 != null) {
                w1.Topmost = false;
            }
        }
uvvvw 2014-03-10
  • 打赏
  • 举报
回复
回楼主。在那台客户机上,百试百中。每次都这样。 但在绝大多数的客户机上,都没有问题。我非常郁闷。
Bonjour-你好 2014-03-10
  • 打赏
  • 举报
回复
Owner是必须设置的。那个“在极少数的xp系统上”出现的情况是必然出现吗?

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧