国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復(fù)原窗體的方法

2020-01-24 01:29:34
字體:
供稿:網(wǎng)友

本文實例講述了C#實現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復(fù)原窗體的方法。分享給大家供大家參考。具體如下:

這里演示C#實現(xiàn)主窗體最小化后出現(xiàn)懸浮框,雙擊懸浮框恢復(fù)原窗體的效果。類似于360桌面。

主窗體:frmMain

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;namespace AppDemo{  public partial class frmMain : Form  {    public frmMain()    {      InitializeComponent();    }    /// <summary>    /// 窗體初始狀態(tài)    /// </summary>    private FormWindowState fwsPrevious;    /// <summary>    /// 懸浮窗體    /// </summary>    private frmTopMost myTopMost;    /// <summary>    /// 主窗體的Load事件    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void frmMain_Load(object sender, EventArgs e)    {      fwsPrevious = this.WindowState;      myTopMost = new frmTopMost(this);    }    /// <summary>    /// 主窗體的SizeChanged事件    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void frmMain_SizeChanged(object sender, EventArgs e)    {      if (this.WindowState == FormWindowState.Minimized)      {        myTopMost.Show();        this.ShowInTaskbar = false;      }      else if (this.WindowState != fwsPrevious)      {        fwsPrevious = this.WindowState;      }    }    /// <summary>    /// 還原窗口方法,即供懸浮窗口進行調(diào)用的。    /// </summary>    public void RestoreWindow()    {      this.WindowState = fwsPrevious;      this.ShowInTaskbar = true;    }  }}

懸浮子窗體:frmTopMost

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace AppDemo{  /// <summary>  /// 首先要設(shè)置其窗體的FormBorderStyle為None,然后設(shè)置其的TopMost為true,接下來,就是主要是三個鼠標事件的處理  /// </summary>  public partial class frmTopMost : Form  {    public frmTopMost()    {      InitializeComponent();    }    /// <summary>    /// 懸浮窗口的構(gòu)造函數(shù)    /// </summary>    /// <param name="main"></param>    public frmTopMost(frmMain main)    {      InitializeComponent();      pParent = main;    }    private Point ptMouseCurrrnetPos, ptMouseNewPos, ptFormPos, ptFormNewPos;    private bool blnMouseDown = false;    private frmMain pParent;    /// <summary>    /// 懸浮窗口的Load事件    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void frmTopMost_Load(object sender, EventArgs e)    {      this.Show();      this.Top = 100;      this.Left = Screen.PrimaryScreen.Bounds.Width - 100;      this.Width = 80;      this.Height = 80;    }    private void frmTopMost_MouseMove(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;      }    }    private void frmTopMost_MouseDown(object sender, MouseEventArgs e)    {      if (e.Button == MouseButtons.Left)      {        blnMouseDown = true;        ptMouseCurrrnetPos = Control.MousePosition;        ptFormPos = Location;      }    }    private void frmTopMost_MouseUp(object sender, MouseEventArgs e)    {      if (e.Button == MouseButtons.Left)        blnMouseDown = false;    }    /// <summary>    /// 雙擊懸浮窗體,進行恢復(fù)主窗體。    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void frmTopMost_MouseDoubleClick(object sender, MouseEventArgs e)    {      SwitchToMain();    }    private void SwitchToMain()    {      pParent.RestoreWindow();      this.Hide();    }  }}

希望本文所述對大家的C#程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳阳县| 永州市| 茂名市| 柳林县| 云林县| 宣恩县| 怀来县| 延庆县| 镇远县| 仁怀市| 离岛区| 自治县| 沙坪坝区| 商水县| 四川省| 贵南县| 稷山县| 治多县| 通海县| 宝鸡市| 旺苍县| 伊通| 濮阳县| 新余市| 綦江县| 上高县| 宜州市| 册亨县| 自治县| 太原市| 枞阳县| 香港| 宕昌县| 张家界市| 彩票| 勃利县| 株洲市| 独山县| 赤水市| 海丰县| 新田县|