18. december 2004 - 20:31
Der er
9 kommentarer og 1 løsning
Detecte mouse-movement
Jeg er ved at lave en applikation der automatisk låser når der ikke har været bruger-aktivitet i 10 sekunder. Jeg kan godt detecte tastetryk, men hvordan detecter jeg om musen har været flyttet?
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
19. december 2004 - 01:13
#1
Du kan f.eks. lave en mouse_move event på din form. Se evt nedenstående eksempel: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace test { /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Timers.Timer timer1; private System.Windows.Forms.TextBox textMouse; private System.Windows.Forms.TextBox textTid; int sek = 0; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.textMouse = new System.Windows.Forms.TextBox(); this.timer1 = new System.Timers.Timer(); this.textTid = new System.Windows.Forms.TextBox(); ((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit(); this.SuspendLayout(); // // textMouse // this.textMouse.Location = new System.Drawing.Point(64, 112); this.textMouse.Name = "textMouse"; this.textMouse.Size = new System.Drawing.Size(136, 20); this.textMouse.TabIndex = 0; this.textMouse.Text = ""; // // timer1 // this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.SynchronizingObject = this; this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed); // // textTid // this.textTid.Location = new System.Drawing.Point(64, 64); this.textTid.Name = "textTid"; this.textTid.Size = new System.Drawing.Size(136, 20); this.textTid.TabIndex = 1; this.textTid.Text = ""; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.textTid); this.Controls.Add(this.textMouse); this.Name = "Form1"; this.Text = "Form1"; this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove); ((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit(); this.ResumeLayout(false); } #endregion private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { sek = 0; textMouse.Text = "Musen blev flyttet"; } private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { sek++; if (sek>10) { textMouse.Text = "Der er nu gået 10 sek..."; } else textTid.Text = ""+sek; } /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } } }
19. december 2004 - 13:18
#2
Ja, jooh. Problemet her, er at Mouse_move ikke bliver kaldt hvis pointeren ligger på en af hoved-formens child-komponenter. Altså hvis jeg putter et panel eller en tabcontrol, på hovedformen, der fylder det hele, så duer det ikke.. Sagen er nemli' den, at jeg har en hel del paneler på min form.
04. januar 2005 - 14:04
#8
Yeps, jeg lavede et hook på samme måde som i den sidste artikel du linkede til, så lav bare et svar...