1. 程式人生 > >winform 屏幕右上角懸浮窗demo

winform 屏幕右上角懸浮窗demo

code move current rms sel mov bound name doc

當窗體最小化時,顯示右懸浮窗!!!

1新建右上角小窗口

(1)去除邊框 (2)最前顯示(設置背景圖案)

技術分享
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 
  9 namespace TopMost
 10 {
 11     public partial
class frmTopMost : Form 12 { 13 private Point ptMouseCurrentPos, ptMouseNewPos, ptFormPos, ptFormNewPos; 14 private bool blnMouseDown = false; 15 private frmMain pParent; 16 //Add ContextMenuStrip . 17 private ContextMenuStrip docMenu; 18 19 public
frmTopMost(frmMain pMain) 20 { 21 InitializeComponent(); 22 pParent=pMain; 23 } 24 25 private void frmTopMost_Load(object sender, EventArgs e) 26 { 27 this.FormBorderStyle = FormBorderStyle.None; 28 this.TopMost = true
; 29 this.Show(); 30 this.Top = 100; 31 this.Left = Screen.PrimaryScreen.Bounds.Width - 200; 32 this.Width = 35; 33 this.Height = 35; 34 35 docMenu = new ContextMenuStrip(); 36 37 ToolStripMenuItem OpenLable = new ToolStripMenuItem(); 38 OpenLable.Text = "Open"; 39 OpenLable.Click+=new EventHandler(OpenLable_Click); 40 ToolStripMenuItem ExitLable = new ToolStripMenuItem(); 41 ExitLable.Text = "Exit"; 42 ExitLable.Click+=new EventHandler(ExitLable_Click); 43 44 docMenu.Items.AddRange(new ToolStripMenuItem[] { OpenLable,ExitLable}); 45 this.ContextMenuStrip = docMenu; 46 } 47 private void frmTopMost_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 48 { 49 if (blnMouseDown) 50 { 51 //Get the current postion of the mouse in the screen. 52 ptMouseNewPos = Control.MousePosition; 53 54 //Set window postion. 55 ptFormNewPos.X = ptMouseNewPos.X - ptMouseCurrentPos.X + ptFormPos.X; 56 ptFormNewPos.Y = ptMouseNewPos.Y - ptMouseCurrentPos.Y + ptFormPos.Y; 57 58 //Save window postion. 59 Location = ptFormNewPos; 60 ptFormPos = ptFormNewPos; 61 62 //Save mouse pontion. 63 ptMouseCurrentPos = ptMouseNewPos; 64 } 65 } 66 67 private void frmTopMost_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e) 68 { 69 if (e.Button == MouseButtons.Left) 70 { 71 blnMouseDown = true; 72 73 //Save window postion and mouse postion. 74 ptMouseCurrentPos = Control.MousePosition; 75 ptFormPos = Location; 76 } 77 } 78 79 private void frmTopMost_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) 80 { 81 if (e.Button == MouseButtons.Left) 82 { 83 blnMouseDown = false; 84 } 85 } 86 //Restore parent from. 87 private void frmTopMost_DoubleClick(object sender, System.EventArgs e) 88 { 89 SwitchToMain(); 90 } 91 private void SwitchToMain() 92 { 93 pParent.RestoreWindow(); 94 this.Hide(); 95 } 96 97 #region //Context events. 98 private void OpenLable_Click(object sender, System.EventArgs e) 99 { 100 SwitchToMain(); 101 } 102 private void ExitLable_Click(object sender, System.EventArgs e) 103 { 104 Application.Exit(); 105 } 106 #endregion 107 108 private void frmTopMost_MouseEnter(object sender, System.EventArgs e) 109 { 110 this.toolTip1.Active = true; 111 this.toolTip1.AutoPopDelay = 500000; 112 this.toolTip1.InitialDelay = 500; 113 this.toolTip1.ReshowDelay = 100; 114 this.toolTip1.ShowAlways = true; 115 } 116 private void frmTopMost_MouseLeave(object sender, System.EventArgs e) 117 { 118 this.toolTip1.Active = false; 119 } 120 121 } 122 }
View Code

2、主窗體

技術分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 
 9 namespace TopMost
10 {
11     public partial class frmMain : Form
12     {
13         public frmMain()
14         {
15             InitializeComponent();
16         }
17 
18         private FormWindowState fwsPrevious;
19         private frmTopMost myTopMost;
20         private void frmMain_Load(object sender, EventArgs e)
21         {
22             //save the windowState;
23             fwsPrevious = this.WindowState;
24 
25             //Create top most window;
26             myTopMost = new frmTopMost(this);
27         }
28 
29         private void frmMain_SizeChanged(object sender,EventArgs e)
30         {
31             if (this.WindowState == FormWindowState.Minimized)
32             {
33                 //window minimized.
34                 //show the most window.
35                 myTopMost.Show();
36                 this.ShowInTaskbar = false;
37             }
38             else if(this.WindowState!=fwsPrevious)
39             {
40                 fwsPrevious = WindowState;
41             }
42         }
43         //Restore window.
44         public void RestoreWindow()
45         {
46             this.WindowState = fwsPrevious;
47             this.ShowInTaskbar = true;
48         }
49     }
50 }
View Code

完!!

winform 屏幕右上角懸浮窗demo