WPF最小化窗体后激活函数显示不了窗体

今天测试小哥给我提了一些问题,其中一个问题是这样的,点击web端的一个链接,是能启动本地的一个应用程序的,如果本地应用程序已启动(通过tcp进程间通信),那么应该要能显示这个本地应用窗口。但是他测试的时候发现并没有预期的效果。

经过多次测试后,发现无效的情况是在窗体设置为最小化的时候,激活显示不了窗体,如果这个窗体只是在其它窗体后面是可以激活的。

测试代码如下:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.WindowState = WindowState.Maximized;
this.SleepShow();
}
public void SleepShow(double sleep = 5)
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromSeconds(sleep);
dispatcherTimer.Tick += (sender, e) => {
this.Activate();
Console.WriteLine("激活显示窗体");
};
dispatcherTimer.Start();
}
}

在当前窗体不是最小化状态下都是有效的,最小化就是不能使用。

加入Topmost = true;也没用。最后的解决方法是,需要先将窗体的WindowState还原为原来的状态,肯定是非Minimized状态的。处理代码如下:

public partial class MainWindow : Window
{
private WindowState windowState;
public MainWindow()
{
InitializeComponent();
this.WindowState = WindowState.Maximized;
this.StateChanged += MainWindow_StateChanged;
this.SleepShow();
this.windowState = WindowState.Maximized;
} private void MainWindow_StateChanged(object sender, EventArgs e)
{
if(this.WindowState == WindowState.Minimized)
{
}
else
{
this.windowState = this.WindowState;//保存非最小化的状态
}
} public void SleepShow(double sleep = 5)
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromSeconds(sleep);
dispatcherTimer.Tick += (sender, e) => {
if(this.WindowState == WindowState.Minimized)//判断当前如果是最小化状态,那么就需要还原,再激活
{
this.WindowState = this.windowState;//还原状态
}
this.Activate();
Console.WriteLine("激活显示窗体");
};
dispatcherTimer.Start();
}
}

还有一个问题就是在调节窗体大小时,获取窗体中的TabControl的ActualHeight和ActualWidth的值总是不变,另外开一个应用程序去测试获取的时候,结果值又是正确的,一脸懵逼。最后往上查找节点最终发现是因为Viewbox控件导致的-V-。最后调整了ViewBox的使用位置,问题解决,自测几遍后,打包发给测试,验证通过。

WPF最小化窗体后激活函数显示不了窗体的更多相关文章

  1. 生产服务器环境最小化安装后 Centos 6.5优化配置[转]

    内容目录 centos6.5最小化安装后配置网络: IP地址, 网关, 主机名, DNS 更新系统源并且升级系统 系统时间更新和设定定时任 创建普通用户并进行sudo授权管理 修改SSH端口号和屏蔽r ...

  2. Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动

    前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...

  3. Centos 7最小化安装后配置

    关闭SELINUX vi /etc/sysconfig/selinux SELINUX=disabled :wq 配置网卡(最小化安装后ifconfig无法使用),该配置的前提是采用 NAT模式 vi ...

  4. 生产服务器环境最小化安装后 Centos 6.5优化配置备忘

    生产服务器环境最小化安装后 Centos 6.5优化配置备忘 作者:Memory 发布于:2014-8-13 15:00 Wednesday 服务器 本文 centos 6.5 优化 的项有18处: ...

  5. 生产服务器环境最小化安装后Centos 6.5优化配置备忘

    生产服务器环境最小化安装后 Centos 6.5优化配置备忘 本文 centos 6.5 优化 的项有18处,列表如下: 1.centos6.5最小化安装后启动网卡 2.ifconfig查询IP进行S ...

  6. Centos 6.4 x86_64 最小化安装后的优化——还需要整理

      Centos 6.4 x86_64 最小化安装后的优化   购买了服务器以后要做的第一件事就是安装操作系统了,这里推荐安装 Centos 6.4 x86_64,安装系统时要选择最小化安装(不需要图 ...

  7. CentOS 6,7最小化安装后再安装图形界面

    CentOS 6.2最小化安装后再安装图形界面 在安装CentOS 6.2时发现它没有提示我要怎么安装,而是“自作主张”地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所 ...

  8. CentOS-6.5-x86_64 最小化安装后,怎样安装 man 程序?

    CentOS-6.5-x86_64 最小化安装后.怎样安装man 程序? CentOS-6.5-x86_64 最小化安装后,没有man 程序,没它还真的不方便. man 是 manual(手冊)的意思 ...

  9. Linux 最小化安装后IP的配置(手动获取静态IP地址)

    一.图形化界面配置(假设为电脑A) 如果你的Linux安装有图形化界面,那么通过以下方式来配置: 我这里是有两块网卡,第一个网卡在上篇中已经通过DHCP来配置了:Linux 最小化安装后IP的配置(D ...

随机推荐

  1. MERGE INTO 解决大数据量复杂操作更新慢的问题

    现我系统中有一条复杂SQL,由于业务复杂需要关联人员的工作离职三个表,并进行分支判断,再计算人员的字段信息,由于人员多,分支多,计算复杂等原因,一次执行需要5min,容易卡死,现在使用MERGE IN ...

  2. koa 路由模块化(一)

    1.项目目录 2.入口文件 根目录/app.js /** * koa 路由模块化 */ const Koa = require('koa'); const router = require('koa- ...

  3. 解决Mysql无法导入存在null数据的问题

    其实很简单,在mysql的控制台输入 SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 然后重 ...

  4. pandas数据分析案例

    1.数据分析步骤 ''' 数据分析步骤: 1.先加载数据 pandas.read_cvs("path") 2.查看数据详情 df.info() ,df.describe() ,df ...

  5. 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型

    笔记 2.技术选型和学后水平     简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度,          1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理 ...

  6. 读取 .properties文件到数据库

    最近有一个这样的需求,将原本配置文件 .properties文件改到数据库当中,这样不用每次修改都重启服务器 java自带有处理 .properties文件的专有类 Properties,处理也很不错 ...

  7. wms、wmts和wfs的区别

    Web地图服务(WMS)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.这个规范定义了三个操作:GetCapabilities返回服务级元数据,它是对服务信息内容和要求参数 ...

  8. 联想H430怎么清除cmos密码?

    联想H430怎么清除cmos密码? 方法一:长时间对cmos放电 首先断掉主机电源,然后找到主板上的纽扣电池,将电池小心取出,然后使用一金属导体,短接电池座中的正负极,这样也可达到快速放电的目的. 有 ...

  9. elk logstash Managing Multiline Events

    1.Java程序的日志特征,logstash 正为此准备好了 codec/multiline 插件! 有时候应用程序会抛异常,就存在着如何合并多行信息的问题,我这里做的配置就是如果当前行是以‘空格’, ...

  10. sftp服务器配置

    环境依赖:openssh-server >=4.8 //ssh -V 查看 安装环境: centos6,centos7 1.创建用户组 sftp    groupadd sftp 2.创建登录用 ...