Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的Form1上有一个用户控件,但当我添加控件的鼠标事件时,它什么都不做为什么?_C# - Fatal编程技术网

C# 我的Form1上有一个用户控件,但当我添加控件的鼠标事件时,它什么都不做为什么?

C# 我的Form1上有一个用户控件,但当我添加控件的鼠标事件时,它什么都不做为什么?,c#,C#,我希望当我在控制区域上移动鼠标时,它会显示消息。 我从这里下载了控件dll: private void lineGraph1_MouseEnter(object sender, EventArgs e) { MessageBox.Show("test"); } 下载了演示并在那里使用了dll文件。 现在我有了Form1上的控件,然后我在Form1 designer中的控件上做了右键单击鼠标属性事件并双击鼠标输入,但当我将鼠标移动到控件上时

我希望当我在控制区域上移动鼠标时,它会显示消息。 我从这里下载了控件dll:

private void lineGraph1_MouseEnter(object sender, EventArgs e)
        {
            MessageBox.Show("test");
        }
下载了演示并在那里使用了dll文件。 现在我有了Form1上的控件,然后我在Form1 designer中的控件上做了右键单击鼠标属性事件并双击鼠标输入,但当我将鼠标移动到控件上时,什么也没有发生


我做错了什么?

添加方法本身没有任何作用。您必须将其添加为事件处理程序,例如

http://www.codeproject.com/Articles/274318/Line-Graph-Component-in-Csharp

当您从右上角的“事件”下拉列表中选择MouseEnter事件时,表单编辑器会为您执行此操作。

我认为这是因为LineGraph本身有一些控件。 例如,如果将OnMouseCenter事件直接放在PlotArea控件上,它可能会正常工作

lineGraph1.MouseEnter += new EventHandler(lineGraph1_MouseEnter);

你的状态集中吗?您是否有其他鼠标事件处理程序?您是否可以发布将事件处理程序添加到eventis lineGraph1_MouseEnter(连接到控件事件)的代码?Kevin我从设计器中创建了事件,而不是在运行时代码中。我转到Form1设计器,然后单击graphline1控件,然后单击属性和事件,然后单击鼠标输入。@user2065612 in为了拥有事件函数,您需要将其添加为事件处理程序。你在哪里做的?还有,这是WPF还是WinForms?Kwel,这很好,但现在当我将鼠标移到控件上时,我看到messageBox一直没有停止,我看到messageBox单击它,它一次又一次不停地显示出来。我如何修复它,使它只显示一次?Kwel不,这不好,我现在再次检查了事件是激活一次,当鼠标在窗体上,我需要它被激活,只有当鼠标在控件上它自己。一旦弹出显示,你离开了控件。关闭弹出窗口后,如果您的鼠标位于控件上方,您将重新输入它。这就是为什么您会出现这种行为,您可以添加一个MouseLeave事件进行检查。当鼠标悬停在窗体上时,事件是激活一次是什么意思?如果事件位于PlotArea上,则应仅为此控件触发该事件。
    public PlotArea()
    {
        this.SetStyle(ControlStyles.ResizeRedraw, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        this.SetStyle(ControlStyles.UserPaint, true);
        this.MouseEnter += new EventHandler(PlotArea_MouseEnter);
    }

    void PlotArea_MouseEnter(object sender, EventArgs e)
    {
        MessageBox.Show("test");
    }