Я пробовал писать код несколько раз, но каждый раз приходил к ошибке. По сути, я пытаюсь сделать «окна», похожие, скажем, на Explorer, Paint, MediaPlayer, где вы можете перетаскивать их, взаимодействовать с ними, сворачивать и закрывать. Конечно, если вы щелкнули по окну, окно под ним (они могут перекрываться) не должно пострадать.
Я знаю, как это сделать, у меня есть список класса, который я называю Window, перебираю его, и я взаимодействую только с первым окном, чтобы указать местоположение щелчка мыши. Таким образом, перекрытие других окон не пострадает.[1]
Затем мне нужно было сделать так, чтобы две перекрывающиеся кнопки не активировались, когда пользователь нажимает на «пересечение обеих кнопок». Я справился с этим, используя тот же метод, что и выше.[2]
Но проблема, с которой я столкнулся сейчас, заключается в том, что если я удерживаю левый щелчок, но затем решаю не нажимать кнопку, я перетаскиваю мышь от кнопки и отпускаю левый щелчок, так что событие нажатия кнопки не будет активирован. Но когда я убираю мышь за границы кнопки и, скажем, в другую... активируется новая кнопка. Чего не должно быть.[3]
Моя установка такова: у меня есть класс под названием Window. В Window у меня есть список классов с именем Interface (аналогично классу Control в WinForms). И в каждом интерфейсе есть структура, которая содержит 4 логических значения, если левый/правый в настоящее время не работают, и если они были отключены в предыдущей обработке. (предлевый, предыдущий правый, текущий левый, текущий правый)
Итак, я готов отказаться от этого (пока нет, поэтому у меня есть исходный код), но мне нужна хорошая структура для создания объектно-ориентированного типа приложения. Однако я не использую WinForms. Мне нужна помощь только со структурой, поэтому код не нужен, достаточно описания. Мне нужно избежать 3 проблем, о которых я упоминал выше.