我正在尝试创建一个基于用户输入动画的模拟程序。当我尝试为 mystoryboard.completed 事件创建事件处理程序时遇到错误。我已经阅读了许多关于事件处理和故事板的不同 API 文章和论坛帖子,但我似乎无法找到我的错误的原因。
我的代码编译并显示窗口,但在我设置事件处理程序的行之后的任何内容都不会执行。我设置所有内容的 MainWindow 如下所示。
public MainWindow()
{
InitializeComponent();
titleTextBlock.Text = "MainWindow()";
//this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
mainSystem = new BalanceSystem(3);
leftBlock = new SystemComponents.Block(0, 100, 150, 100, mainSystem);
rightBlock = new SystemComponents.Block(1, 100, 150, 100, mainSystem);
balanceBeam = new SystemComponents.Bar(0, 0, 250, 150, 100, mainSystem);
mainSystem.addComponent(leftBlock, leftWeight);
mainSystem.addComponent(rightBlock, rightWeight);
mainSystem.addComponent(balanceBeam, balanceBar);
titleTextBlock.Text = "LOADED";
}
“BalanceSystem”的构造函数是事情开始出错的时候。它进入如下所示的构造函数:
public BalanceSystem(int count)
{
componentCount = count;
masterTimeline = new MovementTimeline(1);
}
输入“BalanceSystem”的构造函数后,它会转到我的客户类“MovementTimeline”的构造函数。打破一切的是 masterStoryboard.Completed 的事件处理程序的创建和订阅。
class MovementTimeline
{
private Storyboard masterStoryboard;
private Duration systemDuration;
public MovementTimeline(int totalTime)
{
systemDuration = new Duration(TimeSpan.FromSeconds(totalTime));
masterStoryboard.Completed += new EventHandler(masterStoryboard_Completed);
}
void masterStoryboard_Completed(object sender, EventArgs e)
{
masterStoryboard.Children.Clear();
//masterStoryboard.Completed -= masterStoryboard_Completed;
}
}
一旦编译器或程序到达创建新 EventHandler 的行,它就会停止执行我的其余代码并按原样加载窗口。我一生都无法弄清楚为什么会这样。