问题描述
  
  用的是vs2005 C# 开发winform 程序。为了项目的安全,当用户点击主窗口的最小化按钮时,主窗口最小化到任务栏,
显示一个托盘图标,当当再次双击它时候,需要弹出一个窗口,输入密码正确才可以看到主窗口。
问题就在这里,弹出对话框到输入密码正确,然后才弹出主窗口。怎么样控制主窗口的显示与隐藏?说明,重构这个窗口问题不能解决。
 mainFram fram = new mainFram();
fram.showDialog();这样的方法不行的。

解决方案 »

  1.   

    http://www.cnblogs.com/fangbaiyi/archive/2009/09/04/1559996.html
      

  2.   

    http://www.cnblogs.com/hanwater/archive/2009/07/28/1532995.html
      

  3.   

    可通过代码,让窗体隐藏this.visible=false;//托盘双击事件
    frmPwd frm=new frmPwd();//密码窗体对象
    frm.showDialog();//密码窗体有个,"确定"按钮 ,单击事件
    frmMain frm=new frmMain();
    frm.visible=true;
      

  4.   

    登录窗体置前static extern bool SetForegroundWindow(IntPtr hWnd);
      

  5.   

    不知道LZ最小化到托盘用的是不是notifyIcon控件,如果是的话应该很简单。
    主窗体部分代码:
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                //窗体大小调整,如果最小化则在通知区域托盘中显示
                if(this.WindowState==FormWindowState.Minimized)
                {
                    this.Hide();
                    this.notifyIcon1.Visible=true;
                }
            }        private void notifyIcon1_MouseDown(object sender, MouseEventArgs e)
            {
                //鼠标左键单击了托盘图标
                if(e.Button==MouseButtons.Left)
                {
                    Form2 frm=new Form2();    //显示要求输入密码的窗口
                    frm.ShowDialog();
                    if (frm.can_show == 1)    //如果输入正确,则显示主窗体
                    {                    this.Show();          //显示主窗体
                        this.WindowState = FormWindowState.Normal;  //恢复主窗体为默认大小
                        notifyIcon1.Visible = false;  //托盘图标不显示
                        this.ShowInTaskbar = true;    //在任务栏中显示图标
                    }
                    frm.Dispose();           //释放输入密码的窗体
                }
            }输入密码的窗体的部分代码:
            public int can_show = 0; //临时变量,判断是否正确输入用户名跟密码,决定是否可以显示主窗体,0-不是 1-是        private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "用户名" && textBox2.Text == "密码")
                {
                    can_close = 1;
                }
                else
                    MessageBox.Show("用户名或密码错误");
            }