Почему MouseLeftButtonUp не срабатывает в WPF?C#

Место общения программистов C#
Ответить
Anonymous
 Почему MouseLeftButtonUp не срабатывает в WPF?

Сообщение Anonymous »

Почему MouseLeftButtonUp на моем холсте не срабатывает в моем приложении WPF?
Вот XAML:
И код:

Код: Выделить всё

    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);
события срабатывают нормально.

Подробнее здесь: https://stackoverflow.com/questions/671 ... ire-in-wpf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»