FormMain.cs

using System;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ProductManager
{
    public partial class FormMain : Form
    {
        #region 自定义对象
        private FormLogin login;
        private FormLock suspend;
        private ListView lvNavigate;
        private TreeView tvNavigate;
        private StringBuilder sbTitle;
        #endregion

        public FormMain()
        {
            #region
            InitializeComponent();
            sbTitle = new StringBuilder("企业销售管理系统!        ");
            this.IsMdiContainer = true;  // 该窗体是多文档界面 (MDI) 子窗体的容器。
            this.DoubleBuffered = true; // 双缓存处理,以减少闪烁。
            this.DesktopBounds = Screen.GetWorkingArea(this); // 在桌面区域全屏显示。
            this.AutoSizeMode = AutoSizeMode.GrowAndShrink;  // 禁用手动调整窗体大小。
            this.SizeGripStyle = SizeGripStyle.Hide;        // 隐藏窗口大小调整手柄。
            statusStrip.SizingGrip = false;                // 隐藏状态栏大小调整手柄。
            notifyIcon.Icon = this.Icon;
            notifyIcon.Visible = true;
            notifyIcon.Text = AppDomain.CurrentDomain.FriendlyName;
            #endregion
        }

        #region TimerInfo
        private void timerInfo_Tick(object sender, EventArgs e)
        {
            statusLabelTime.Text = string.Format(" {0:dddd yyyy-MM-dd tt h:mm:ss}", DateTime.Now);
            if (this.Text.Length < sbTitle.Length)
                this.Text = sbTitle.ToString(0, this.Text.Length + 1);
            else
            {
                sbTitle.Append(sbTitle[0]);
                this.Text = sbTitle.Remove(0, 1).ToString();
            }
        }
        #endregion

        #region FormLoad
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            statusLabelUser.Text = Convert.ToString(this.Tag);
            infoMenu.Visible = (statusLabelUser.Text == "后台管理");
            this.TreeNavigate();
        }
        #endregion

        #region FormClosing
        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            base.OnFormClosing(e);
            switch (e.CloseReason)
            {
                case CloseReason.ApplicationExitCall:
                    notifyIcon.Visible = false;
                    DBConnection.Server.Close();
                    if (login != null)
                        login.Dispose();
                    if (suspend != null)
                        suspend.Dispose();
                    break;
                case CloseReason.UserClosing:
                    this.Visible = false;
                    e.Cancel = true;
                    break;
            }
        }
        #endregion

        #region FormVisible
        protected override void OnVisibleChanged(EventArgs e)
        {
            base.OnVisibleChanged(e);
            if (this.Visible)
                this.Activate();
            else
                notifyIcon.ShowBalloonTip(10, notifyIcon.Text, "    在系统托盘中运行", ToolTipIcon.Info);
        }
        #endregion

        #region notifyIcon_DoubleClick
        private void notifyIcon_DoubleClick(object sender, EventArgs e)
        {
            this.Visible = !this.Visible;
        }
        #endregion

        #region exitMenuItem_Click
        private void exitMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("您真的要退出企业销售管理系统吗?", "系统询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                Application.Exit();
        }
        #endregion

        #region ListNavigate
        private void ListNavigate()
        {
            if (lvNavigate == null)
            {
                lvNavigate = new ListView();
                lvNavigate.Alignment = ListViewAlignment.Left;
                lvNavigate.Dock = DockStyle.Fill;
                lvNavigate.Font = new Font("宋体", 12F, FontStyle.Regular);
                lvNavigate.LabelWrap = false; // 禁用项标签换行。
                lvNavigate.LargeImageList = imageList;
                lvNavigate.View = View.LargeIcon;
                lvNavigate.MouseUp += new MouseEventHandler(lvNavigate_MouseUp);
            }
            splitterNavigate.Controls.Clear();
            splitterNavigate.Controls.Add(lvNavigate);
            lvNavigate.BringToFront(); // 控件移到 Z 顺序的前面。
            foreach (ToolStripMenuItem menuItem in menuStrip.Items)
            {
                if (!menuItem.Visible)
                    continue;
                Button btnNavigate = new Button();
                btnNavigate.Font = lvNavigate.Font;
                btnNavigate.Height = 32;
                btnNavigate.Tag = menuItem;
                btnNavigate.Text = menuItem.Text;
                btnNavigate.Click += new EventHandler(btnNavigate_Click);
                splitterNavigate.Controls.Add(btnNavigate);
            }
            (splitterNavigate.Controls[2] as Button).PerformClick();
        }

        private void btnNavigate_Click(object sender, EventArgs e)
        {
            foreach (Button btn in splitterNavigate.Controls.OfType<Button>())
            {
                btn.Dock = DockStyle.Bottom;
            }
            Button btnNavigate = sender as Button;
            btnNavigate.Dock = DockStyle.Top;
            lvNavigate.Clear();
            lvNavigate.BeginUpdate();
            foreach (ToolStripMenuItem item in (btnNavigate.Tag as ToolStripMenuItem).DropDownItems)
            {
                lvNavigate.Items.Add(item.Text.Substring(0, item.Text.Length - 4), 0).Tag = item;
            }
            StringBuilder sb = new StringBuilder(lvNavigate.Items[0].Text);
            int length = (lvNavigate.ClientSize.Width - sb.Length * lvNavigate.Font.Height) / 16;
            while (length-- > 0)
            {
                sb.Insert(0, ' ');
                sb.Append(' ');
            }
            lvNavigate.Items[0].Text = sb.ToString(); // 文本水平居中。
            lvNavigate.EndUpdate();
        }

        private void lvNavigate_MouseUp(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo info = lvNavigate.HitTest(e.Location);
            if ((info.Location & ListViewHitTestLocations.Label) != 0)
            {
                if (info.Item.Equals(lvNavigate.Tag))
                    return;
                ToolStripMenuItem menuItem = info.Item.Tag as ToolStripMenuItem;
                if (!menuItem.OwnerItem.Equals(systemMenu) && !menuItem.OwnerItem.Equals(helpMenu))
                {
                    foreach (Form childForm in this.MdiChildren)
                    {
                        childForm.Close();
                        if (Convert.ToBoolean(childForm.Tag))
                            return;
                        childForm.Dispose();
                    }
                    sbTitle.Remove(0, sbTitle.Length);
                    sbTitle.Append(info.Item.Text);
                    sbTitle.Capacity = sbTitle.Append("        ").Length;
                    this.Text = null;
                    lvNavigate.Tag = info.Item;
                }
                menuItem.PerformClick();
            }
        }
        #endregion

        #region TreeNavigate
        private void TreeNavigate()
        {
            if (tvNavigate == null)
            {
                tvNavigate = new TreeView();
                tvNavigate.Dock = DockStyle.Fill;
                tvNavigate.Font = new Font("宋体", 12F, FontStyle.Regular);
                tvNavigate.HotTracking = true; // 当鼠标指针经过项文本时,其外观变为超链接的形式。
                tvNavigate.ImageList = imageList;
                tvNavigate.Indent = 32; // 每个子树节点级别的缩进距离(以像素为单位)。默认值为 19。
                tvNavigate.AfterSelect += new TreeViewEventHandler(tvNavigate_AfterSelect);
            }
            splitterNavigate.Controls.Clear();
            splitterNavigate.Controls.Add(tvNavigate);
            tvNavigate.Nodes.Clear();
            tvNavigate.BeginUpdate();
            TreeNode rootNode = tvNavigate.Nodes.Add("企业销售管理");
            foreach (ToolStripMenuItem menu in menuStrip.Items)
            {
                if (!menu.Visible)
                    continue;
                rootNode.Nodes.Add(null, null, 2, 2);
                TreeNode childNode = rootNode.Nodes.Add(menu.Text.Substring(0, menu.Text.Length - 4));
                foreach (ToolStripMenuItem item in menu.DropDownItems)
                {
                    childNode.Nodes.Add(item.Text.Substring(0, item.Text.Length - 4)).Tag = item;
                }
            }
            rootNode.ExpandAll();
            tvNavigate.EndUpdate();
        }

        private void tvNavigate_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Level < 2) // 判断选中的节点是否为叶子节点。
                return;
            if (e.Node.Equals(tvNavigate.Tag))
                return;
            e.Node.SelectedImageIndex = 1;
            ToolStripMenuItem menuItem = e.Node.Tag as ToolStripMenuItem;
            if (menuItem.OwnerItem.Equals(systemMenu) || menuItem.OwnerItem.Equals(helpMenu))
                tvNavigate.SelectedNode = null;
            else
            {
                foreach (Form childForm in this.MdiChildren)
                {
                    childForm.Close(); // 在窗体关闭时,FormClosing 事件发生。
                    if (Convert.ToBoolean(childForm.Tag))
                    {
                        tvNavigate.SelectedNode = tvNavigate.Tag as TreeNode;
                        return;
                    }
                    childForm.Dispose();
                }
                sbTitle.Remove(0, sbTitle.Length);
                sbTitle.Append(e.Node.Text);
                sbTitle.Capacity = sbTitle.Append("        ").Length;
                this.Text = null;
                tvNavigate.Tag = e.Node;
            }
            menuItem.PerformClick();
        }
        #endregion

        #region Navigate
        private void navigateMenuItem_Click(object sender, EventArgs e)
        {
            if (navigateMenuItem.Text == "列表导航栏(&B)")
            {
                navigateMenuItem.Text = "树图导航栏(&B)";
                this.ListNavigate();
            }
            else
            {
                navigateMenuItem.Text = "列表导航栏(&B)";
                this.TreeNavigate();
            }
        }
        #endregion

        #region SetMdiParent
        private void SetMdiParent(Form frame)
        {
            frame.MdiParent = this;    // 设置此窗体的当前多文档界面 (MDI) 父窗体。
            frame.ControlBox = false; // 隐藏该窗体的标题栏中的控件框。
            frame.FormBorderStyle = FormBorderStyle.None; // 窗体无边框。
            frame.WindowState = FormWindowState.Maximized; // 窗体最大化。
            frame.Text = null;
            frame.Show();
        }

        private void providerMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProvider());
        }

        private void clientMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormClient());
        }

        private void workerMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormWorker());
        }

        private void buyInfoMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductBuy());
        }

        private void buySelectMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormSelectBuy());
        }

        private void sellInfoMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductSell());
        }

        private void sellSelectMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormSelectSell());
        }

        private void productTypeMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductType());
        }

        private void productInfoMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProduct());
        }

        private void inputMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductIn());
        }

        private void outputMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductOut());
        }

        private void productCheckMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormProductCheck());
        }

        private void buyTotalMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormTotalBuy());
        }

        private void sellTotalMenuItem_Click(object sender, EventArgs e)
        {
            SetMdiParent(new FormTotalSell());
        }
        #endregion

        #region SetOwnerForm
        private void userMenuItem_Click(object sender, EventArgs e)
        {
            new FormUser().ShowDialog(this);
            if (lvNavigate != null)
                lvNavigate.Tag = null;
            if (tvNavigate != null)
            {
                tvNavigate.SelectedNode = null;
                tvNavigate.Tag = null;
            }
        }

        private void backupMenuItem_Click(object sender, EventArgs e)
        {
            new FormBackupDB().ShowDialog(this);
        }

        private void serviceMenuItem_Click(object sender, EventArgs e)
        {
            new FormService().ShowDialog(this);
        }

        private void powerStateMenuItem_Click(object sender, EventArgs e)
        {
            if (suspend == null)
                suspend = new FormLock();
            suspend.ShowDialog(this); // (this) <=> suspend.Owner = this.
        }

        private void loginMenuItem_Click(object sender, EventArgs e)
        {
            if (login == null)
            {
                login = new FormLogin();
                login.ShowInTaskbar = false; // 禁止在 Windows 任务栏中显示窗体。
            }
            if (login.ShowDialog(this) == DialogResult.OK) // (this) <=> login.Owner = this.
            {
                this.Show();
                this.Activate();
                this.OnLoad(EventArgs.Empty);
            }
        }
        #endregion

        #region System.Diagnostics.Process
        private void calcToolMenu_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("calc.exe").Close(); // 启动计算器。
        }

        private void notepadToolMenu_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("notepad.exe").Close(); // 启动记事本。
        }
        #endregion
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值