根据另一个事件执行事件

时间:2013-12-30 08:57:21

标签: c# mouseevent

我正在开发一个c#winform应用程序,它将鼠标点击坐标保存在屏幕的任何位置。当鼠标单击任务栏上的最小化图标以恢复表单时,我不想保存坐标。我发生了一个事件,同时调整表单大小,存储窗口状态并检查状态,然后在mouse_click事件中保存坐标。但是鼠标单击首先发生并且没有读取鼠标单击后发生的窗口状态。请帮助我在鼠标点击任务栏后如何使鼠标单击事件读取窗口状态。

感谢。

1 个答案:

答案 0 :(得分:0)

根据你的评论,这是我能想到的最好的。这将鼠标X保存在列表中,并与Y保存相同。我没有包含命名空间,因为您可以将其添加到表单代码中。你可以使用CreateSensor();创建传感器,和Analyze();分析X和Y值。

public void CreateSensor(){
    Form SensorForm = new Form();
    SensorForm.Visible = false;
    SensorForm.FormBorderStyle = FormBorderStyle.None;
    SensorForm.WindowState = FormWindowState.Maximized; 
    SensorForm.MouseHover += new MouseEventHandler(SensorForm_Hover);
}

var MouseXList = new List<int>();   
var MouseYList = new List<int>();   

public void Analyse(){
    if(MouseXList.Count != MouseYList.Count){
        Console.WriteLine("An error occured when collection the mouse coordinates");
         return;      
    } 
    else{
        for(int i = 0; i < MouseXList.Count; ++i){
            Console.WriteLine("X: {0}, Y: {1}\n", MouseXList[i].ToString(), MouseYList[i].ToString());
        } 
    } 
}

private void SensorForm_Hover(object sender, MouseEventArgs e){
     MouseXList.Add(e.X);
     MouseYList.Add(e.Y);       
}

如果它不起作用,请告诉我,我会尝试为您修复