求问一个WPF单例的问题(只能打开一个程序)

一树秋叶 2016-11-01 05:21:30

/// <summary>
/// 该函数设置由不同线程产生的窗口的显示状态
/// </summary>
/// <param name="hWnd">窗口句柄</param>
/// <param name="cmdShow">指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分</param>
/// <returns>如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零</returns>
[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
/// <summary>
/// 该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。
/// 系统给创建前台窗口的线程分配的权限稍高于其他线程。
/// </summary>
/// <param name="hWnd">将被激活并被调入前台的窗口句柄</param>
/// <returns>如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零</returns>
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);

private const int SW_SHOWNOMAL = 1;
private static void HandleRunningInstance(Process instance)
{
ShowWindowAsync(instance.MainWindowHandle, SW_SHOWNOMAL);//显示
SetForegroundWindow(instance.MainWindowHandle);//当到最前端
}


上面是代码,其中HandleRunningInstance这个方法在WPF中有点问题,请教一下各位如何修改:
情况是这样的,打开了主窗口Main,如果此时最小化了Main,再打开程序时可以正常提示并且把Main激活到显示了。但是如果是打开了Main的一个子页面A,A在打开时是Main.hide隐藏的,如果把A最小化了,再打开程序时可以正常提示但是无法把A激活到屏幕中显示。同样的代码在之前winform项目中是可以实现把A激活的。所以想问问各位大神,在WPF下应该怎么修改或使用什么方法可以达到我需要的那种效果?谢谢各位了!
...全文
263 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一树秋叶 2016-11-03
  • 打赏
  • 举报
回复
求大佬们帮忙啊。。
一树秋叶 2016-11-03
  • 打赏
  • 举报
回复
现在用findwindow函数可以找到特定标题的窗口然后显示,但是各种子窗口太多了,怎样能找到当前实例的当前活动窗口是哪个啊?
一树秋叶 2016-11-02
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 kuhaizhengzha 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] A是模态窗口么,是的话 遍历窗口集合(只有2个),一个是main,一个是A ,判断到A的时候 将它active。
是模态的,但是main按钮下会打开很多不同的子窗口A/B/C。。。。每个都判断?[/quote] 模态窗口的话 你怎么可能同时打开很多窗口。[/quote] 不是,我是说不同按钮会打开不同的页面A或者B或者C,到时候是先判断集合数量大于1,然后判断非main吗?是这意思吗
exception92 2016-11-02
  • 打赏
  • 举报
回复
引用 2 楼 kuhaizhengzha 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] A是模态窗口么,是的话 遍历窗口集合(只有2个),一个是main,一个是A ,判断到A的时候 将它active。
是模态的,但是main按钮下会打开很多不同的子窗口A/B/C。。。。每个都判断?[/quote] 模态窗口的话 你怎么可能同时打开很多窗口。
一树秋叶 2016-11-02
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
A是模态窗口么,是的话 遍历窗口集合(只有2个),一个是main,一个是A ,判断到A的时候 将它active。
是模态的,但是main按钮下会打开很多不同的子窗口A/B/C。。。。每个都判断?
exception92 2016-11-01
  • 打赏
  • 举报
回复
A是模态窗口么,是的话 遍历窗口集合(只有2个),一个是main,一个是A ,判断到A的时候 将它active。

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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