Событие мыши между классами
у меня есть довольно простое событие mousemove, которое просто показывает положение мыши X,Y на изображении picturebox
** класс обработки изображений
public void move(MouseEventArgs e) { double x = e.X - xOffset; double y = e.Y - yOffset; double worldx, worldy; worldx = DPM.xlo + (x-DPM.hll)*(DPM.xhi-DPM.xlo)/(DPM.hur-DPM.hll); worldy = DPM.ylo + (y-DPM.vll)*(DPM.yhi-DPM.ylo)/(DPM.vur-DPM.vll); f1.labX.Text = worldx.ToString("F"); f1.labY.Text = worldy.ToString("F"); }
я пытаюсь переместить все свои изменения изображений в класс изображений, но вызов mousemove из основного класса не работает - я думаю, это потому, что каждый раз, когда я создаю экземпляр класса, я обновляю переменные (и я использую xOffset и yOffset, которые являются последней известной позицией курсора). У меня также есть некоторые вещи, основанные на кликах, и они прекрасно работают, что подтверждает мои подозрения, я думаю.
я читал как о синглетах, так и о более сложной обработке событий, но мой опыт работы с ними нулевой (и мне трудно понять документы API, поскольку я не разработчик), поэтому я очень ценю любые подсказки о том, как с этим справиться.
если я сохраняю код в основной форме, все работает нормально, так что я знаю, что основной материал в порядке
Что я уже пробовал:
**в основном классе форм
private void evImage_MouseMove(object sender, MouseEventArgs e) { EvImage ev1 = new EvImage(this); ev1.move(e); }
это каждый раз создает новый класс, и я думаю, что понимаю, почему он не работает
public EvImage ev; public Form1(EvImage form) { this.ev = form; } private void evImage_MouseMove(object sender, MouseEventArgs e) { ev.move(e); }
я думал, что это даст мне один экземпляр, но он не будет компилироваться