Newer
Older
RbFreqStand / RbFreqStandMeasure / RbFreqStdMeas.cs
using Casic.Birmm.RbFreqStandMeasure.counter;
using Casic.Birmm.RbFreqStandMeasure.info;
using Casic.Birmm.RbFreqStandMeasure.Properties;
using Casic.Birmm.RbFreqStandMeasure.R_DataBase;
using Casic.Birmm.RbFreqStandMeasure.setting;
using Casic.Birmm.RbFreqStandMeasure.Tools;
using System;
using System.Drawing;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Casic.Birmm.RbFreqStandMeasure
{
    public partial class RbFreqStdMeas : Form
    {

        #region 无边框拖动效果/最小化窗口/关闭窗口
        [DllImport("user32.dll")]//拖动无窗体的控件
        public static extern bool ReleaseCapture();
        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        public const int WM_SYSCOMMAND = 0x0112;
        public const int SC_MOVE = 0xF010;
        public const int HTCAPTION = 0x0002;

        private void RbFreqStdMeas_MouseDown(object sender, MouseEventArgs e)
        {
            //拖动窗体
            ReleaseCapture();
            SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
        }
        #endregion
        private void btnExitSys_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void btnMinSys_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Minimized;
        }
        private void btnExitSys_MouseHover(object sender, EventArgs e)
        {
            ToolTip p = new ToolTip();
            p.ShowAlways = true;
            p.SetToolTip(btnExitSys, "退出");
        }
        private void btnMinSys_MouseHover(object sender, EventArgs e)
        {
            ToolTip p = new ToolTip();
            p.ShowAlways = true;
            p.SetToolTip(btnMinSys, "最小化");
        }

        private bool[] menuSelected = { true, false, false, false, false, false };
        // 按钮图标
        private PictureBox[] menuPics;
        // 按钮图标的资源名称(选中的资源名称在后面加上  _selected)
        private string[] menuIconResources;
        // 按钮文本
        private Label[] menuLabels;
        // 按钮下划线
        private Label[] menuUnderlines;

        #region 样式配置
        private readonly Color textColor = Color.FromArgb(51, 51, 51); // #333333
        private readonly Color menuHoverBackColor = Color.FromArgb(86, 163, 242); // #56a3f2
        private readonly Color menuSelectedColor = Color.FromArgb(63, 132, 215); // #3f84d7
        #endregion

        private void ClearAllMenuSelected()
        {
            // 找到当前选中的按钮
            int index = 0;
            for (int i = 0; i < menuSelected.Length; i++)
            {
                if (menuSelected[i] == true)
                {
                    index = i;
                    break;
                }
            }

            // 将当前按钮的效果设置为默认未选中
            menuPics[index].BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject(menuIconResources[index], null);
            menuLabels[index].ForeColor = textColor;
            menuUnderlines[index].BackColor = Color.Transparent;
        }

        #region 首页按钮点击、鼠标移入/移出效果
        private void HoverHome()
        {
            panHome.Back = menuHoverBackColor;
        }
        private void LeaveHome()
        {
            panHome.Back = Color.Transparent;
        }
        private void SelectHome()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveHome();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { true, false, false, false, false, false };

            // 将新选中的按钮设置为选中
            picIconHome.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_home_selected", null);
            labHomeText.ForeColor = menuSelectedColor;
            labHomeSelected.BackColor = menuSelectedColor;

            // 切换至首页
            switchMainPanel(0);
        }
        #endregion

        #region 基准状态按钮点击、移入/移出效果
        private void HoverStatus()
        {
            panStatus.Back = menuHoverBackColor;
        }
        private void LeaveStatus()
        {
            panStatus.Back = Color.Transparent;
        }
        private void SelectStatus()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveStatus();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { false, true, false, false, false, false };

            // 将新选中的按钮设置为选中
            picIconStatus.BackgroundImage = (Bitmap) Resources.ResourceManager.GetObject("icon_status_selected", null);
            labStatusText.ForeColor = menuSelectedColor;
            labStatusSelected.BackColor = menuSelectedColor;

            // 切换到基准状态页面
            switchMainPanel(1);
        }
        #endregion

        #region 送检仪器按钮点击、移入/移出效果
        private void HoverDev()
        {
            panDev.Back = menuHoverBackColor;
        }
        private void LeaveDev()
        {
            panDev.Back = Color.Transparent;
        }
        private void SelectDev()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveDev();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { false, false, true, false, false ,false };

            // 将新选中的按钮设置为选中
            picIconDev.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_dev_selected", null);
            labDevText.ForeColor = menuSelectedColor;
            labDevSelected.BackColor = menuSelectedColor;

            // 切换至待检仪器管理
            switchMainPanel(2);
        }
        #endregion

        #region 频率计数器测量点击、移入/移出效果
        private void HoverCounter()
        {
            panCounter.Back = menuHoverBackColor;
        }
        private void LeaveCounter()
        {
            panCounter.Back = Color.Transparent;
        }
        private void SelectCounter()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveCounter();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { false, false, false, true, false, false };

            // 将新选中的按钮设置为选中
            picIconCounter.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_counter_selected", null);
            labCounterText.ForeColor = menuSelectedColor;
            labCounterSelected.BackColor = menuSelectedColor;

            // 切换到频率计数器的界面
            switchMainPanel(3);
        }
        #endregion

        #region 数据管理点击、移入/移出效果
        private void HoverData()
        {
            panData.Back = menuHoverBackColor;
        }
        private void LeaveData()
        {
            panData.Back = Color.Transparent;
        }
        private void SelectData()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveData();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { false, false, false, false, true, false };

            // 将新选中的按钮设置为选中
            picIconData.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_data_selected", null);
            labDataText.ForeColor = menuSelectedColor;
            labDataSelected.BackColor = menuSelectedColor;

            // 弹出对话框进行数据备份与还原操作
            DataBackupDlg dataDlg = new DataBackupDlg();
            dataDlg.ShowDialog();
        }
        #endregion

        #region 系统管理点击、移入/移出效果
        private void HoverSetting()
        {
            panSetting.Back = menuHoverBackColor;
        }
        private void LeaveSetting()
        {
            panSetting.Back = Color.Transparent;
        }
        private void SelectSetting()
        {
            // 移除所有按钮的选中样式
            ClearAllMenuSelected();

            // 鼠标移入效果去掉
            LeaveSetting();

            // 重新设置所有按钮的状态
            menuSelected = new bool[] { false, false, false, false, false, true };

            // 将新选中的按钮设置为选中
            picIconSetting.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_setting_selected", null);
            labSettingText.ForeColor = menuSelectedColor;
            labSettingSelected.BackColor = menuSelectedColor;

            // 切换到设置的界面
            switchMainPanel(5);
        }
        #endregion

        public RbFreqStdMeas()
        {
            InitializeComponent();

            // 打开数据库
            int ret = DbConnectService.openDb();
            if (ret == 0)
            {
                LogHelper.WriteInfoLog(MethodBase.GetCurrentMethod().DeclaringType, "打开数据库成功");
            } 
            else
            {
                MessageBox.Show("打开数据库失败", null, MessageBoxButtons.OK, MessageBoxIcon.Error);
                LogHelper.WriteErrorLog(MethodBase.GetCurrentMethod().DeclaringType, "打开数据库失败");
            }
        }

        private void RbFreqStdMeas_Load(object sender, EventArgs e)
        {
            menuPics = new PictureBox[] { picIconHome, picIconStatus, picIconDev, picIconCounter, picIconData, picIconSetting };
            menuLabels = new Label[] { labHomeText, labStatusText, labDevText, labCounterText, labDataText, labSettingText };
            menuUnderlines = new Label[] { labHomeSelected, labStatusSelected, labDevSelected, labCounterSelected, labDataSelected, labSettingSelected };
            menuIconResources = new string[] { "icon_home", "icon_status", "icon_dev", "icon_counter", "icon_data", "icon_setting" };

            // 加载首页的内容
            switchMainPanel(0);
        }

        private void panHome_Click(object sender, EventArgs e)
        {
            if (menuSelected[0] == false)
            {
                SelectHome();
            }
        }

        private void panHome_MouseHover(object sender, EventArgs e)
        {
            // 没有选中首页时才动作
            if (menuSelected[0] == false)
            {
                HoverHome();
            }
        }

        private void panHome_MouseLeave(object sender, EventArgs e)
        {
            // 没有选中首页时才动作
            if (menuSelected[0] == false)
            {
                LeaveHome();
            }
        }

        private void panStatus_Click(object sender, EventArgs e)
        {
            if (menuSelected[1] == false)
            {
                SelectStatus();
            }
        }

        private void panStatus_MouseHover(object sender, EventArgs e)
        {
            if (menuSelected[1] == false)
            {
                HoverStatus();
            }

        }

        private void panStatus_MouseLeave(object sender, EventArgs e)
        {
            if (menuSelected[1] == false)
            {
                LeaveStatus();
            }
        }

        private void panDev_Click(object sender, EventArgs e)
        {
            if (menuSelected[2] == false)
            {
                SelectDev();
            }
        }

        private void panDev_MouseHover(object sender, EventArgs e)
        {
            if (menuSelected[2] == false)
            {
                HoverDev();
            }
        }

        private void panDev_MouseLeave(object sender, EventArgs e)
        {
            if (menuSelected[2] == false)
            {
                LeaveDev();
            }
        }

        private void panCounter_Click(object sender, EventArgs e)
        {
            if (menuSelected[3] == false)
            {
                SelectCounter();
            }
        }

        private void panCounter_MouseHover(object sender, EventArgs e)
        {
            if (menuSelected[3] == false)
            {
                HoverCounter();
            }
        }

        private void panCounter_MouseLeave(object sender, EventArgs e)
        {
            if (menuSelected[3] == false)
            {
                LeaveCounter();
            }
        }

        private void panData_Click(object sender, EventArgs e)
        {
            if (menuSelected[4] == false)
            {
                SelectData();
            }
        }

        private void panData_MouseHover(object sender, EventArgs e)
        {
            if (menuSelected[4] == false)
            {
                HoverData();
            }
        }

        private void panData_MouseLeave(object sender, EventArgs e)
        {
            if (menuSelected[4] == false)
            {
                LeaveData();
            }
        }

        private void panSetting_Click(object sender, EventArgs e)
        {
            if (menuSelected[5] == false)
            {
                SelectSetting();
            }
        }

        private void panSetting_MouseHover(object sender, EventArgs e)
        {
            if (menuSelected[5] == false)
            {
                HoverSetting();
            }
        }

        private void panSetting_MouseLeave(object sender, EventArgs e)
        {
            if (menuSelected[5] == false)
            {
                LeaveSetting();
            }
        }

        private void switchMainPanel(int index)
        {
            panelMain.Controls.Clear();

            switch (index)
            {
                case 0: // 首页
                    HomeCtrlForm home = new HomeCtrlForm();
                    home.Show();
                    panelMain.Controls.Add(home);
                    break;

                case 1: // 基准状态
                    StatusCtrlForm statusForm = new StatusCtrlForm();
                    statusForm.Show();
                    panelMain.Controls.Add(statusForm);
                    break;

                case 2: // 待检设备
                    InfoCtrlForm infoForm = new InfoCtrlForm();
                    infoForm.Show();
                    panelMain.Controls.Add(infoForm);
                    break;

                case 3: // 频率计数器范围
                    CounterCtrlForm counterForm = new CounterCtrlForm();
                    counterForm.Show();
                    panelMain.Controls.Add(counterForm);
                    break;

                case 4: // 计量信息
                    DevTestedCtrlForm tested = new DevTestedCtrlForm();
                    tested.Show();
                    panelMain.Controls.Add(tested);
                    break;

                case 5: // 设置
                    SettingCtrlForm settingForm = new SettingCtrlForm();
                    settingForm.Show();
                    panelMain.Controls.Add(settingForm);
                    break;

                default:
                    break;
            }
        }
    }
}