zoukankan      html  css  js  c++  java
  • DevComponents.DotNetBar2.dll设置样式的使用

    有点模仿QQ消息盒子的感觉,代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using DevComponents.DotNetBar;
    
    
    namespace BW_ArasSpirit
    {
        public partial class SystemMsgBox : Form
        {
            private static SystemMsgBox _initialize = null;
    
            public static SystemMsgBox getinstance()
            {
                if (_initialize == null)
                {
                    _initialize = new SystemMsgBox();
                }
                return _initialize;
            }
    
            #region 变量
            private bool boolVisible = false;
            #endregion
    
            #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;
            #endregion
    
            public SystemMsgBox()
            {
                InitializeComponent();
            }
    
            //#region 鼠标Move Hover Leave样式区域
            //private void labelShowMsg_MouseMove(object sender, MouseEventArgs e)
            //{
            //    labelShowMsg.ForeColor = Color.FromArgb(50, 50, 50);
            //}
    
            //private void labelShowMsg_MouseLeave(object sender, EventArgs e)
            //{
            //    labelShowMsg.ForeColor = Color.FromArgb(100, 100, 100);
            //}
            //#endregion
    
            #region 取消窗体关闭事件
            private void FormMessage_FormClosing(object sender, FormClosingEventArgs e)
            {
                e.Cancel = true;
                boolVisible = true;
                timerShowWindow.Enabled = true;
                timerWait.Enabled = false;
            }
            #endregion
    
            #region 窗体关闭
            private void btnFormClose_MouseClick(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    this.Close();
                }
            }
            #endregion
    
            #region 显示窗体函数
            public void ShowWindow(List<Task> wlplist,List<Task> ptasklist)
            {
                this.Show();
                this.Opacity = 0;
                boolVisible = false;
                timerWait.Interval = 5000;
                Point point;
                try
                {
                    point = frmSet.point;
                }
                catch (Exception e)
                {
                    throw e;
                }
                this.Location = new Point((((point.X+10) + (point.X -10))/2)- (this.Size.Width/2), Screen.PrimaryScreen.Bounds.Height - 40 - this.Size.Height);
                timerShowWindow.Enabled = true;
                int wlpcount = wlplist.Count;
                int pacount = ptasklist.Count;
                if (wlpcount == 0)
                {
                    lbltasklist.Text = "项目流任务-" + ptasklist[0].Ptaskname + "  (" + ptasklist.Count + ")";
                    labelXTitle.Text ="消息盒子"+"  ("+"1"+")";
                }
                if (pacount == 0)
                {
                    lblwlplist.Text = "工作流任务-" + wlplist[0].Wlptaskname + "  (" + wlplist.Count + ")";
                    labelXTitle.Text = "消息盒子" + "  (" + "1" + ")";
                }
                if (wlpcount != 0 && pacount != 0)
                {
                    lbltasklist.Text = "项目流任务-" + ptasklist[0].Ptaskname + "  (" + ptasklist.Count + ")";
                    lblwlplist.Text = "工作流任务-" + wlplist[0].Wlptaskname + "  (" + wlplist.Count + ")";
                    labelXTitle.Text = "消息盒子" + "  (" + "2" + ")";
                }
            }
            #endregion
    
            #region 控制窗体显示
            private void timerShowWindow_Tick(object sender, EventArgs e)
            {
                if (!boolVisible)
                {
                    this.Opacity += 0.1;
                    if (this.Opacity >= 1)
                    {
                        timerShowWindow.Enabled = false;
                        timerWait.Enabled = false;
                        boolVisible = false;
                    }
                }
                else
                {
                    this.Opacity -= 0.1;
                    if (this.Opacity == 0)
                    {
                        boolVisible = false;
                        this.Hide();
                        timerShowWindow.Enabled = false;
                        timerWait.Enabled = false;
                    }
                }
            }
            #endregion    
    
            #region 等待
            private void timerWait_Tick(object sender, EventArgs e)
            {
                timerShowWindow.Enabled = false;
                timerWait.Enabled = false;
            }
            #endregion
    
            #region 移动无边框窗体事件
            private void labelXTitle_MouseDown(object sender, MouseEventArgs e)
            {
                //ReleaseCapture();
                //SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//*********************调用移动无窗体控件函数
            }
            #endregion
    
            public delegate void MyDelegate(bool istrue);
            public event MyDelegate MyEvent;
            private void label1_Click(object sender, EventArgs e)
            {
                try
                {
                    MyEvent(true);
                    this.Hide();
                }
                catch (Exception exp)
                {           
                    throw exp;
                }        
            }
    
            public static bool istrueexit = false;
            private void SystemMsgBox_Load(object sender, EventArgs e)
            {
               
            }
    
            //private void labelXTitle_MouseMove(object sender, MouseEventArgs e)
            //{
            //    labelXTitle.ForeColor = Color.Red;
            //    labelXTitle.Font = new Font(labelXTitle.Font, FontStyle.Bold | FontStyle.Underline);
            //}
    
            //private void labelXTitle_MouseLeave(object sender, EventArgs e)
            //{
            //    labelXTitle.ForeColor = Color.White;
            //    labelXTitle.Font = new Font(labelXTitle.Font, FontStyle.Bold);
            //}
        }
    }
    
    mian.cs
    
    public SystemMsgBox smb = SystemMsgBox.getinstance();
            private void niIcon_MouseDown(object sender, MouseEventArgs e)
            {
                if (isRun && IsCloseWindow == "0")
                {
                    point = Cursor.Position;
                    if (!smb.Visible)
                    {
                        smb.MyEvent +=new SystemMsgBox.MyDelegate(this.getreturnvalue);
                        smb.ShowWindow(wlptasklist,ptasklist);
                        timerpoint.Start();
                    }
                }
            }
    
     private Point lastpoint;
            private void timerpoint_Tick(object sender, EventArgs e)
            {
                if (lastpoint == null) return;
                if (smb.Visible)
                {
                    //定义范围
                    //起始位置
                    lastpoint = Cursor.Position;
                    if (lastpoint.Y > point.Y + 100 || lastpoint.Y < point.Y - 100)
                    {
                        //超出高度隐藏
                        smb.Hide();
                        timerpoint.Stop();
                    }
                    //根据y的范围判定x的取值
                    int x = (((point.X + 10) + (point.X - 10)) / 2) - (211 / 2);
                    int y = Screen.PrimaryScreen.Bounds.Height - 40 - 97;
    
                    //图标的上方,判断窗体的范围
                    if (lastpoint.Y < y || lastpoint.Y != y)
                    {
                        if (lastpoint.X < x || lastpoint.X > x + 211)
                        {
                            smb.Hide();
                        }
                    }
                    //图标的下方,判断图标的范围
                    //if (lastpoint.Y > y || lastpoint.Y != y)
                    //{
                    //    if (lastpoint.X < x + 211 / 2 - 10 || lastpoint.X > x + 211 / 2 + 10)
                    //    {
                    //        smb.Hide();
                    //    }
                    //}
                }
            }
    


     

    作者:Joe.Fan
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    结构体数组
    关于VCL的编写 (一) 如何编写自己的VCL控件
    谈一下怎样设计Oracle 分区表
    c++截取屏幕图片并保存(函数代码实现)
    微信公众平台开发之微团购
    怎么调用系统通讯录并向被选中联系人发送短信
    TFS(Team Foundation Server)介绍和入门
    2014百度之星资格赛题解
    C语言中volatilekeyword的作用
    自己定义滑动开关控件的实现与使用
  • 原文地址:https://www.cnblogs.com/fanxingthink/p/4176157.html
Copyright © 2011-2022 走看看