Событие колесика мыши не срабатывает после нажатия на холст

Благодаря http://www.eqqon.com/index.php/Piccolo_Snippets, у меня было масштабирование колесика мыши, работающее хорошо, пока я не добавил виджеты winform в форму вне холста; см. фото тестовой формы ниже:

форма с холстом piccolo и кнопкой winform и трекбаром

я обнаружил, что если я нажму на кнопку 1 и вернусь обратно на холст, у меня больше не будет событий колесика мыши. Другие события мыши (например, вход / выход PNode) все еще работают, однако. даже после нажатия на холст колесико мыши остается мертвым. Также хорошо работает событие mousedown холста. поэтому ломается только колесо мыши. ниже приведен минималистский код для демонстрации того, что я вижу.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using UMD.HCIL.Piccolo;
using UMD.HCIL.Piccolo.Event;
using UMD.HCIL.Piccolo.Nodes;

namespace piccolo_wheel_test {
    public partial class Form1 : Form {

        int mdown_count = 0;
        int mwheel_count = 0;

        public Form1() {
            InitializeComponent();

            PNode rect = PPath.CreateRectangle(40, 40, 20, 50);
            rect.Brush = Brushes.Blue;
            pCanvas1.Layer.AddChild(rect);

            pCanvas1.Camera.MouseWheel += new PInputEventHandler(Camera_MouseWheel);
            pCanvas1.Camera.MouseDown += new PInputEventHandler(Camera_MouseDown);
        }

        void Camera_MouseWheel(object sender, PInputEventArgs e) {
            Debug.WriteLine("got mouse wheel: " + (mwheel_count++).ToString());
        }

        void Camera_MouseDown(object sender, PInputEventArgs e) {
            Debug.WriteLine("got mouse down: " + (mdown_count++).ToString());
        }

        private void pCanvas1_Enter(object sender, EventArgs e) {
            Debug.WriteLine("enter pcanvas");
        }

        private void pCanvas1_Leave(object sender, EventArgs e) {
            Debug.WriteLine("leave pcanvas");
        }

        private void button1_Enter(object sender, EventArgs e) {
            Debug.WriteLine("enter button");
        }

        private void button1_Leave(object sender, EventArgs e) {
            Debug.WriteLine("leave button");
        }

    }
}

кроме того, я вижу, что холст не вызывает последовательно события "ввод" / "отпуск"; я вижу один "ввод", когда форма загружается, и один "выход", если я нажимаю кнопку 1, но больше не "вход" / "выход", если я иду вперед и назад. далее, когда я нажимаю на button1, я вызываю событие "enter", но когда я нажимаю обратно на холст, "button1" не вызывает событие "exit" (что происходит, если я нажимаю на другие виджеты winform, такие как трекбар.) спасибо.

0 ответов

Другие вопросы по тегам