zoukankan      html  css  js  c++  java
  • 摘录的WinForm Control 开发5,WinForm 开发:FlashGetFormDemos ,类似FlashGet的悬浮窗

    主窗体中有做两个处理:
    1,主窗体在最小化时,悬浮窗显示
        代码:
    代码
            void MainFormSizeChanged(object sender, EventArgs e)
            {
                
    ifthis.WindowState == FormWindowState.Minimized )
                {
                    topMostForm.Show();
                    
    this.ShowInTaskbar = false;
                }
                
    else ifthis.WindowState != previouseState )
                {
                    previouseState 
    = this.WindowState;
                }
            }

    2,提供还原主窗口的方法

            /// <summary>
            
    /// 还原主窗口
            
    /// </summary>
            public void RestoreWindowState()
            {
                
    this.WindowState=previouseState;
                
    this.ShowInTaskbar=true;
            }

     悬浮窗处理:

    1,设置窗口状态为None,以去掉窗体边框

       this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

    2,Load事件里,亮点是设置窗口的透明度

       代码:

            /// <summary>
            
    /// 设置透明
            
    /// </summary>
            private void SetClarity(double prameter)
            {
                
    this.Opacity=prameter;
            }

     3,悬浮窗的鼠标事件:

       代码:

    代码
    void TopMostFormMouseDown(object sender, MouseEventArgs e)
            {
                
    if(e.Button==MouseButtons.Left)
                {
                    blnMouseDown 
    = true;
         
                    
    // 保存当前,鼠标位置,窗口位置
                    ptMouseCurrrnetPos = Control.MousePosition;
                    ptFormPos 
    = Location;
                }
            }
            
            
    void TopMostFormMouseUp(object sender, MouseEventArgs e)
            {
                
    if(e.Button==MouseButtons.Left)
                {
                    blnMouseDown
    =false;
                }
            }
            
            
    void TopMostFormMouseMove(object sender, MouseEventArgs e)
            {
                
    if( blnMouseDown )
                {
                    
    //获取当前鼠标位置
                    ptMouseNewPos = Control.MousePosition;
         
                    
    //设置窗口位置
                    ptFormNewPos.X = ptMouseNewPos.X - ptMouseCurrrnetPos.X + ptFormPos.X;
                    ptFormNewPos.Y 
    = ptMouseNewPos.Y - ptMouseCurrrnetPos.Y + ptFormPos.Y;
         
                    
    //设置窗口位置
                    Location = ptFormNewPos;
                    ptFormPos 
    = ptFormNewPos;
         
                    
    //保存鼠标位置
                    ptMouseCurrrnetPos = ptMouseNewPos;
                } 
            }

     4、转换为主窗口的函数:

       代码:

         void TopMostFormDoubleClick(object sender, EventArgs e)
            {
                SwitchToMainForm();
            }
            
            
    void SwitchToMainForm()
            {
                
    this.mainForm.RestoreWindowState();
                
    this.Hide();
            }

     /Files/csharponworking/FlashFormDemos.zip

  • 相关阅读:
    PHP常用代码大全
    使用PHP CURL的POST数据
    mysql_fetch_assoc() ,mysql_fetch_array() , mysql_fetch_row()的区别
    Memcached 搭建过程
    IOS中的UIScrollView
    IOS的自定义控件
    苹果API常用英语名词
    UIActivityIndicatorView
    UIButton
    UIControl事件
  • 原文地址:https://www.cnblogs.com/csharponworking/p/1680008.html
Copyright © 2011-2022 走看看