Newer
Older
RbFreqStand / RbFreqStandMeasure / RbFreqStdMeas.cs
TAN YUE on 18 Mar 2021 16 KB 20210318 主界面美化
using Casic.Birmm.RbFreqStandMeasure.info;
using Casic.Birmm.RbFreqStandMeasure.Properties;
using Casic.Birmm.RbFreqStandMeasure.setting;
using System;
using System.Drawing;
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(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
        }
        private void btnExitSys_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void btnMinSys_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }
        private void btnExitSys_MouseHover(object sender, EventArgs e)
        {
            ToolTip p = new ToolTip();
            p.ShowAlways = true;
            p.SetToolTip(this.btnExitSys, "退出");
        }
        private void btnMinSys_MouseHover(object sender, EventArgs e)
        {
            ToolTip p = new ToolTip();
            p.ShowAlways = true;
            p.SetToolTip(this.btnMinSys, "最小化");
        }
        #endregion

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            // 将新选中的按钮设置为选中
            this.picIconCounter.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_counter_selected", null);
            this.labCounterText.ForeColor = ColorTranslator.FromHtml("#3f84d7");
            this.labCounterSelected.BackColor = ColorTranslator.FromHtml("#3f84d7");
        }
        #endregion

        #region 计量管理点击、移入/移出效果
        private void HoverMeasure()
        {
            panMeasure.Back = ColorTranslator.FromHtml("#56a3f2");
        }
        private void LeaveMeasure()
        {
            panMeasure.Back = Color.Transparent;
        }
        private void SelectMeasure()
        {
            // 移除所有按钮的选中样式
            this.ClearAllMenuSelected();

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

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

            // 将新选中的按钮设置为选中
            this.picIconMeasure.BackgroundImage = (Bitmap)Resources.ResourceManager.GetObject("icon_measure_selected", null);
            this.labMeasureText.ForeColor = ColorTranslator.FromHtml("#3f84d7");
            this.labMeasureSelected.BackColor = ColorTranslator.FromHtml("#3f84d7");

            // 切换至计量信息管理
            switchMainPanel(4);
        }
        #endregion

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

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

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

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

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

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

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

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

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

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

        public RbFreqStdMeas()
        {
            InitializeComponent();
        }

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

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

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

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

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

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

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

        }

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

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

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

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

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

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

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

        private void panMeasure_Click(object sender, EventArgs e)
        {
            if (this.menuSelected[4] == false)
            {
                SelectMeasure();
            }
        }

        private void panMeasure_MouseHover(object sender, EventArgs e)
        {
            if (this.menuSelected[4] == false)
            {
                HoverMeasure();
            }
        }

        private void panMeasure_MouseLeave(object sender, EventArgs e)
        {
            if (this.menuSelected[4] == false)
            {
                LeaveMeasure();
            }
        }

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

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

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

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

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

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

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

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

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

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

                case 3: // 频率计数器范围
                    break;

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

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

                default:
                    break;
            }
        }
    }
}