窗体最小化至托盘时候,点击快捷键直接让其显示,并不需要以Alt+Tab切换至该窗体,直接点击键盘就能进行操作,该怎么做?我当前情况是,最小化至托盘时候点击快捷键能以正常的情况显示,但必须以Alt+Tab切换到该窗体才能进行操作。求助大家,该怎么做?注意:上述情况是在任务栏有多个程序的情况下进行操作的。

解决方案 »

  1.   

    http://www.cnblogs.com/chenwei19/archive/2009/02/09/1386742.html
      

  2.   

    private void gridView1_KeyDown(object sender, KeyEventArgs e)      
            {
                if (e.Control == true && (e.KeyValue == (int)'U' || e.KeyValue == (int)'u'))
                {
                   from1.show();            }
            }
      

  3.   

    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);
            }
      

  4.   

    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;
                }
            }
      

  5.   


    我当前的情况就是这样,但完全不行,点击快捷键显示窗体的时候,窗体无法进行进行操作,哪怕它的确是当前运行的程序。必须要以alt+tab键切换一下。
      

  6.   

     你的意思不就是按快捷键唤出窗体么,ctrl + u 让窗体显示,难道不是你要的?你要的是什么?
      

  7.   


    你这种事件我很明白,但是与这是完全不同的。
    还有,用到这个窗体.Show()我个人觉得挺不好的,对于较大一点的程序就比较影响速率。