Klickereignis außerhalb der Schaltfläche behandeln
Ich versuche, c # zu üben, indem ich eine App reproduziere, die sich im Apple AppStore befindet.
In der App gibt es ein Rechteck mit dem Text:"Touch me"
. Wenn Sie es berühren, wird das Rechteck neu positioniert.
Nachdem Sie dies einige Male getan haben, ändert sich der Text in "Berühren Sie mich nicht". In diesem Fall müssen Sie außerhalb des Rechtecks berühren.
Es ging alles gut, bis zu dem Punkt, an dem Sie außerhalb des Rechtecks berühren müssen.
Hier ist mein Event-Handler:
private void Canvas_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
{
if (click == 0)
{
if (rectangle1.IsMouseOver || textBlock1.IsMouseOver)
{
// reposition and stuff
if (clicks == 10)
{
// Change the value of the variable click to 1
click = 1;
textBlock1.Text = "Do Not Click me";
Canvas.SetLeft(textBlock1, 200);
}
}
}
else
{
if (rectangle1.IsMouseOver || textBlock1.IsMouseOver)
{
// Game Over
this.Close();
} else
{
// reposition and stuff
click = 0;
textBlock1.Text = "Click me";
Canvas.SetLeft(textBlock1, 225);
}
}
}
Das Programm funktioniert einwandfrei bis zu dem Punkt, an dem Sie außerhalb des Rechtecks klicken müssen.
Das Programm wird geschlossen, wenn Sie auf das Rechteck klicken, aber wenn Sie außerhalb davon klicken, geschieht nichts. Gibt es einen Event-Handler, der die gewünschte Aufgabe ausführen kann?
Hier ist meine XAML
<Window x:Class="ClickMe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="510" Width="525" ResizeMode="NoResize">
<Canvas Name="canvas" MouseLeftButtonDown="Canvas_MouseLeftButtonDown_1">
<Rectangle Fill="#FFF4F4F5" Name="rectangle1" HorizontalAlignment="Left" Height="38" Stroke="Black" VerticalAlignment="Top" Width="509" Canvas.Left="0" Canvas.Top="63"/>
<Label Name="label1" Content="0" Canvas.Left="57" Canvas.Top="446"/>
<Label Content="Klicks:" Canvas.Left="10" Canvas.Top="446"/>
<TextBlock Name="textBlock1" Canvas.Left="225" TextWrapping="Wrap" Text="Click Me" Canvas.Top="74" Margin="10,0,0,0"/>
</Canvas>