求助:最小化至托盘 窗体最小化至托盘时候,点击快捷键直接让其显示,并不需要以Alt+Tab切换至该窗体,直接点击键盘就能进行操作,该怎么做?我当前情况是,最小化至托盘时候点击快捷键能以正常的情况显示,但必须以Alt+Tab切换到该窗体才能进行操作。求助大家,该怎么做?注意:上述情况是在任务栏有多个程序的情况下进行操作的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/chenwei19/archive/2009/02/09/1386742.html private void gridView1_KeyDown(object sender, KeyEventArgs e) { if (e.Control == true && (e.KeyValue == (int)'U' || e.KeyValue == (int)'u')) { from1.show(); } } class文件:using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; namespace 项目名称{ public class HotKey { //如果函数执行成功,返回值不为0。 //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 [DllImport("user32.dll", SetLastError = true)] public static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keys vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 } } } form1文件: private void Frm_MdiForm_Load(object sender, EventArgs e) { HotKey.RegisterHotKey(this.Handle, 103, HotKey.KeyModifiers.Alt, Keys.F3); } #region 设置热键 protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; //按快捷键 switch (m.Msg) { case WM_HOTKEY: switch (m.WParam.ToInt32()) { case 103: //处理内容 break; } break; } base.WndProc(ref m); } 1.工具箱 托放控件 notifyIcon 到窗体上2.设置 notifyIcon1 ICON 属性 text 属性 如 “这是个程序”3.添加 notifyIcon1 DoubleClick 事件 (显示窗体) 代码如下 private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.ShowInTaskbar = true; this.WindowState = FormWindowState.Normal; notifyIcon1.Visible = false; }4.添加 窗体 SizeChanged 事件 代码如下: private void frmGate_SizeChanged(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) //窗体最小化 { this.ShowInTaskbar = false; this.notifyIcon1.Visible = true; } } 我当前的情况就是这样,但完全不行,点击快捷键显示窗体的时候,窗体无法进行进行操作,哪怕它的确是当前运行的程序。必须要以alt+tab键切换一下。 你的意思不就是按快捷键唤出窗体么,ctrl + u 让窗体显示,难道不是你要的?你要的是什么? 你这种事件我很明白,但是与这是完全不同的。还有,用到这个窗体.Show()我个人觉得挺不好的,对于较大一点的程序就比较影响速率。 如何在winform程序中,调用xp系统的记事本和计算器? C# word标签替换问题 使用databinding属性能否绑定枚举类型? 我有一个XML格式的字符串,如何将其转化为一个DataSet 用c#编写pc机与plc的串口通信(高分请教) 一个简单问题,但很实用。webform 请教 C# WinForm 做个像瑞星的卡卡助手(就是那个爱打呼的小狮子) 有人做过么? sockets初学,为什么结束不了线程,为什么要抛出那样的异常??? C#数据绑定将一个Excel 表格绑定到一个Datagridview出现问题 c#题目求解 C#中调用SSIS包的问题,急急急!!
{
if (e.Control == true && (e.KeyValue == (int)'U' || e.KeyValue == (int)'u'))
{
from1.show(); }
}
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace 项目名称
{
public class HotKey
{
//如果函数执行成功,返回值不为0。
//如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, //要定义热键的窗口的句柄
int id, //定义热键ID(不能与其它ID重复)
KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
Keys vk //定义热键的内容
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, //要取消热键的窗口的句柄
int id //要取消热键的ID
);
//定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
}
}
form1文件:
private void Frm_MdiForm_Load(object sender, EventArgs e)
{
HotKey.RegisterHotKey(this.Handle, 103, HotKey.KeyModifiers.Alt, Keys.F3);
}
#region 设置热键
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;
//按快捷键
switch (m.Msg)
{
case WM_HOTKEY:
switch (m.WParam.ToInt32())
{
case 103:
//处理内容
break;
}
break;
}
base.WndProc(ref m);
}
2.设置 notifyIcon1 ICON 属性 text 属性 如 “这是个程序”
3.添加 notifyIcon1 DoubleClick 事件 (显示窗体) 代码如下
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false; }
4.添加 窗体 SizeChanged 事件 代码如下:
private void frmGate_SizeChanged(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized) //窗体最小化
{
this.ShowInTaskbar = false;
this.notifyIcon1.Visible = true;
}
}
我当前的情况就是这样,但完全不行,点击快捷键显示窗体的时候,窗体无法进行进行操作,哪怕它的确是当前运行的程序。必须要以alt+tab键切换一下。
你这种事件我很明白,但是与这是完全不同的。
还有,用到这个窗体.Show()我个人觉得挺不好的,对于较大一点的程序就比较影响速率。