Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 重新订阅C中的自定义事件#表示事件名称不在当前上下文中_C#_Wpf_Xaml_Events_Mouseevent - Fatal编程技术网

C# 重新订阅C中的自定义事件#表示事件名称不在当前上下文中

C# 重新订阅C中的自定义事件#表示事件名称不在当前上下文中,c#,wpf,xaml,events,mouseevent,C#,Wpf,Xaml,Events,Mouseevent,在我的WPF项目中,我有一个在一秒钟内滑动的网格网格。这是我用鼠标在其中一个上面触发的。 MouseEnter->onmouseinter()->MoveMicroGrid为每个网格运行以移动它们。 我意识到MouseEnter事件在整个动画中仍然处于活动状态,即使没有完成,也会重新开始。因此,我添加了SlideCompleted事件,并尝试从/重新订阅Grid_0_0,这样就不会中断动画 在幻灯片完成方法中,我被告知“当前模型中不存在名称'OnMouseOver'。问题的原因是什么?是否有更好

在我的WPF项目中,我有一个在一秒钟内滑动的网格网格。这是我用鼠标在其中一个上面触发的。 MouseEnter->onmouseinter()->MoveMicroGrid为每个网格运行以移动它们。 我意识到MouseEnter事件在整个动画中仍然处于活动状态,即使没有完成,也会重新开始。因此,我添加了SlideCompleted事件,并尝试从/重新订阅Grid_0_0,这样就不会中断动画

在幻灯片完成方法中,我被告知“当前模型中不存在名称'OnMouseOver'。问题的原因是什么?是否有更好的方法来处理“始终处于活动状态”事件的暂停

PS:遗漏了一些代码,但包含了我认为与该问题相关的所有部分。不知道这是否适合这个网站

    private void MoveMicroGrid(Grid g, Direction direction) {
        g.RenderTransform = new TranslateTransform(0, 0);
        Duration duration = new Duration(new TimeSpan(0, 0, 0, 1, 0));
        DoubleAnimation anim;
        switch (direction) {
            case Direction.Up:
                anim = new DoubleAnimation(-microGridDistanceY, duration);
                anim.Completed += new EventHandler(SlideCompleted);
                g.RenderTransform.BeginAnimation(TranslateTransform.YProperty, anim);
                break;
            case Direction.Down:
                anim = new DoubleAnimation(microGridDistanceY, duration);
                anim.Completed += new EventHandler(SlideCompleted);
                g.RenderTransform.BeginAnimation(TranslateTransform.YProperty, anim);
                break;
            case Direction.Left:
                anim = new DoubleAnimation(-microGridDistanceX, duration);
                anim.Completed += new EventHandler(SlideCompleted);
                g.RenderTransform.BeginAnimation(TranslateTransform.XProperty, anim);
                break;
            case Direction.Right:
                anim = new DoubleAnimation(microGridDistanceX, duration);
                anim.Completed += new EventHandler(SlideCompleted);
                g.RenderTransform.BeginAnimation(TranslateTransform.XProperty, anim);
                break;
        }
        
    }

    private void SlideCompleted(object sender, EventArgs e)
    {
        Grid_0_0.MouseEnter += new MouseEventHandler(OnMouseOver); //<-- This is the error line
        ResetBoardSlide();
    }
    private void OnMouseEnter(object sender, MouseEventArgs e)
    {
        Grid_0_0.MouseEnter -= OnMouseEnter;
        SlideBoard(Direction.Down);
    }
专用微电网(电网g,方向){
g、 RenderTransform=新的TranslateTransform(0,0);
持续时间=新的持续时间(新的时间跨度(0,0,0,1,0));
双动画;
开关(方向){
案例方向:向上:
动画=新的双动画(-microGridDistanceY,持续时间);
anim.Completed+=新事件处理程序(SlideCompleted);
g、 RenderTransform.BeginAnimation(TranslateTransform.YProperty,anim);
打破
案例方向。向下:
动画=新的双动画(MicroGridDistance,持续时间);
anim.Completed+=新事件处理程序(SlideCompleted);
g、 RenderTransform.BeginAnimation(TranslateTransform.YProperty,anim);
打破
案例方向。左:
动画=新的双动画(-microGridDistanceX,持续时间);
anim.Completed+=新事件处理程序(SlideCompleted);
g、 RenderTransform.BeginAnimation(TranslateTransform.XProperty,anim);
打破
案例说明。右:
动画=新的双动画(microGridDistanceX,持续时间);
anim.Completed+=新事件处理程序(SlideCompleted);
g、 RenderTransform.BeginAnimation(TranslateTransform.XProperty,anim);
打破
}
}
私有void SlideCompleted(对象发送方,事件参数e)
{

Grid_0_0.MouseEnter+=new MouseEventHandler(OnMouseOver);//您似乎输入了错误的事件处理程序名称。在
SlideCompleted()
方法中,您有以下内容:

Grid_0_0.MouseEnter += new MouseEventHandler(OnMouseOver); 
但是您在示例中提供的事件处理程序名为
OnMouseEnter
,而不是
OnMouseOver
。我想这就是您看到错误消息的原因。因此,您可以重命名有问题的方法,或者将上面的行更改为:

Grid_0_0.MouseEnter += new MouseEventHandler(OnMouseEnter); 

…我呃…这是我贴在这里的第一个问题的结果,这让我很伤心…当错误如此愚蠢时,你应该删除原始问题吗?…但是谢谢你,LOL,我不会担心的。每个人都会这样。我看了大概十五分钟才注意到。这是我第一个被接受的答案,所以我这对我们两人来说都是一个里程碑。尽管如此,我还是不知道删除这个问题是否合适。不过,在这些特定情况之外,似乎没有什么特别的帮助,所以也许吧。