【发布时间】:2017-02-11 09:47:02
【问题描述】:
我是 C# 新手,我一直在尝试设置一个基本游戏(来自一本书),但是由于以下错误,我正处于无法运行的地步
在 mscorlib.dll 中发生了“System.Exception”类型的异常,但是 未在用户代码中处理
WinRT 信息:元素已经是另一个元素的子元素。
附加信息:未检测到已安装的组件。
查看代码我看不出有什么问题;
private void StartGame()
{
human.IsHitTestVisible = true;
humanCaptured = false;
progressBar.Value = 0;
startButton.Visibility = Visibility.Collapsed;
playArea.Children.Add(target);
playArea.Children.Add(human);
enemyTimer.Start();
tagetTimer.Start();
}
查看文档大纲,这似乎也是正确的顺序;
对我来说唯一的东西似乎是 Xaml;
<Canvas x:Name="playArea" Grid.RowSpan="3" Margin="10,77,10,0" >
<StackPanel x:Name="human" Orientation="Vertical">
<Ellipse Fill="Purple" Height="10" Width="10" />
<Rectangle Fill="Purple" Height="25" Width="10"/>
</StackPanel>
<Rectangle x:Name="target" Height="53.149" Canvas.Left="1202.196" Stroke="Black" Canvas.Top="419.937" Width="56.008" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="#FF4860F7" Offset="0.508"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.RenderTransform>
<CompositeTransform Rotation="46.097"/>
</Rectangle.RenderTransform>
</Rectangle>
<TextBox x:Name="gameOverText" TextWrapping="Wrap" Text="Game Over" Canvas.Left="428" Canvas.Top="248" Height="107" Width="413" FontSize="72" FontWeight="Bold" FontStyle="Italic"/>
<Canvas.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF1BAE78" Offset="1"/>
<GradientStop Color="#FFDCEE3B"/>
</LinearGradientBrush>
</Canvas.Background>
</Canvas>
有什么想法吗?
【问题讨论】:
-
当这些元素已经是 playArea 的子元素时,为什么要调用 playArea.Children.Add() 不是很清楚。如 xaml 和大纲所示。大概是在抱怨什么。在引发此异常的语句上放置一个大箭头。并注释掉这两个调用,如果我的猜测是正确的,那么它就解决了问题。
-
谢谢你的工作,我不是 100% 公平地说这是我第一次真正尝试 c#,我正在关注一本书(Head First),可能我错了。
-
我将在下面添加我的代码,这样可能更有意义:
标签: c# c#-4.0 visual-studio-2012 c#-3.0