私のCanvasのMouseLeftButtonUpがWPFアプリケーションで起動しないのはなぜですか?ここ はXAMLです:WPFでMouseLeftButtonUpが起動しないのはなぜですか?
<Grid Height="300" Width="400">
<Canvas Name="canvas" MouseMove="canvas_MouseMove" MouseLeftButtonUp="canvas_MouseLeftButtonUp" Background="LightGray"/>
</Grid>
とコード:
private bool hasClicked = false;
public Window1()
{
InitializeComponent();
}
private void canvas_MouseMove(object sender, MouseEventArgs e)
{
if (!this.hasClicked)
{
this.Cursor = Cursors.None;
this.canvas.Children.Clear();
this.insertRectangle(false);
}
}
private void insertRectangle(bool filled)
{
Rectangle rect = createRect(filled);
Point pos = Mouse.GetPosition(this.canvas);
Canvas.SetLeft(rect, pos.X);
Canvas.SetTop(rect, pos.Y);
this.canvas.Children.Add(rect);
}
private Rectangle createRect(bool fill)
{
Rectangle rect = new Rectangle();
rect.Height = 50;
rect.Width = 120;
if (fill)
{
rect.Fill = new SolidColorBrush(Colors.Green);
}
else
{
rect.Stroke = new SolidColorBrush(Colors.Green);
}
return rect;
}
private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
this.hasClicked = true;
this.insertRectangle(true);
this.Cursor = Cursors.Arrow;
}
編集:私は、キャンバスに背景色を追加しようとしているが、それでもイベントが発生しません。 MouseMoveがMouseLeftButtonUpをオーバーライドしているようです。
Edit2:MouseMoveイベントを削除すると、mouseLeftButtonUpが発生します。
Edit3:大きなコード例。 insertRectangle法で 、私は
Canvas.SetTop(rect, 50);
instead of
Canvas.SetTop(rect, pos.Y);
イベント火災だけで罰金を使用している場合。
あなたのコードは私にとっては問題ではありません。両方の出来事が解雇された。 –