C#パレットプログラムインスタンス表示フォームをダブルクリックし、パレットに最小化


タスクバーをクリックして表示→非表示切り替え、右クリックメニュー、スナップしてフォームを閉じるイベント
 public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }


        #region  


        public void Logout()
        {
            if (MessageBox.Show(" ?", " ", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                notifyIcon1.Visible = false;
                FormCollection fc = Application.OpenForms;
                if (fc != null && fc.Count > 0)
                {
                    foreach (Form window in fc)
                    {
                        window.Hide();
                    }
                }
                CacheHelper.CurrentUsrName = "";
                CacheHelper.CurrentRoleId = 0;
                frmLogin fl = new frmLogin();
                fl.Show();
            }


        }


        private void  ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Logout();
        }


        #endregion


        #region  


        private void  ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmChangePwd fcp = new frmChangePwd();
            fcp.Show();
        }


        #endregion


        private void frmMain_Load(object sender, EventArgs e)
        {


        }


        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show(" ?", " ", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                Logout();
            }
            else
            {
                e.Cancel = true;
            }
        }


        private void  ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ShowWin();
        }


        private void  ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Logout();
        }


        private void frmMain_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                HideWin();
            }
        }


        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
            }
            else
            {
                ShowWin();
            }
        }


        #region  


        /// <summary>
        ///  
        /// </summary>
        private void HideWin()
        {
            this.notifyIcon1.Visible = true;
            this.Hide();
        }


        /// <summary>
        ///  
        /// </summary>
        private void ShowWin()
        {
            if (Visible)
            {
                HideWin();
            }
            else
            {
                ///// , show  state
                Show();
                WindowState = FormWindowState.Normal;
            }
        }


        #endregion
    }