Рейтинг:
2
Graeme_Grant
То MouseDown
и MouseMove
события контроля. Вот пример (на C#), который легко понять и демонстрирует метод: location-перемещение элемента управления путем перетаскивания его мышью в C# - Stack Overflow[^] что переводится как:
Private MouseDownLocation As Point
Private Sub pictureBox1_MouseDown(sender As Object, e As MouseEventArgs)
If e.Button = System.Windows.Forms.MouseButtons.Left Then
MouseDownLocation = e.Location
End If
End Sub
Private Sub pictureBox1_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = System.Windows.Forms.MouseButtons.Left Then
pictureBox1.Left = e.X + pictureBox1.Left - MouseDownLocation.X
pictureBox1.Top = e.Y + pictureBox1.Top - MouseDownLocation.Y
End If
End Sub
BeginnerCoderPete
К сожалению, объекты, которые я перемещаю, находятся на элементе управления, который вообще не имеет событий щелчка или событий мыши, кроме "MouseCaptureChanged", который на самом деле не работает со стороны элемента управления, который мне нужен. Если это поможет,то это элемент управления ActiveX Synrad WinMark Pro.
Я могу выбирать объекты и перемещать их через код, поэтому мне приходится использовать кнопки для перемещения их по странице.
Graeme_Grant
Вышеприведенное решение должно быть поддержано. Вам нужно связаться с автором "Synrad WinMark Pro ActiveX control" и спросить его, как это сделать.
BeginnerCoderPete
Я был в контакте с Synrad, и представитель, с которым я разговаривал, знает, что для элемента управления нет событий щелчка или событий мыши, его объяснение состояло в том, что он действительно используется только для предварительного просмотра изображения, которое должно быть вытравлено. Хотя все методы существуют для выбора и перемещения отдельных объектов.
Если бы у меня был какой-то способ обнаружить щелчок на пульте управления, я мог бы пойти оттуда, но, к сожалению, нет никакого способа, или так мне сказали.
Поэтому моей альтернативой было использовать кнопки, я просто хотел лучше, чем 1 ход за клик. У меня есть возможность увеличить расстояние, на которое перемещается объект за один клик, но я все равно предпочел бы просто удерживать кнопку нажатой, если бы хотел переместить объект далеко.
Graeme_Grant
Почему бы не иметь "режим редактирования"? Затем, когда активен "режим редактирования", есть элементы управления, которые" украшают " элемент управления Synad, чтобы разрешить настройки, немного похожие на панель управления Microsoft - у него есть drag adorner в левом верхнем углу окна конструктора форм.
BeginnerCoderPete
Хорошо, я посмотрю на "украшение" - это термин, с которым я еще не сталкивался, так что не совсем уверен, но у меня есть приблизительная идея, и я думаю, что у меня была идея, но тогда я понятия не имел, как это сделать. Я посмотрю, спасибо за совет.
Graeme_Grant
"Адорнер" - это визуальный сигнал... что-то, на что пользователь может нажать, чтобы выполнить определенную функцию, например изменить размер дескрипторов адорнера...
Поместите элемент управления панели на форму и попробуйте переместить его ... вам придется использовать ручку "adorner"...
BeginnerCoderPete
Спасибо, в этом так много смысла. Если я смогу прикрепить его к своему объекту Synrad, я буду смеяться, я сообщу, когда я либо сделал это, либо потерпел неудачу. Очень ценю вашу помощь! Спасибо.
Просто зависит от погоды или нет, у объекта может быть украшатель.
Graeme_Grant
Украшатель-это концепция, а не фактический контроль. Вам нужно программно расположить элементы управления вокруг объекта Synrad и управлять событиями...
Взгляните на статью Марка: FlowSharp[^]- он называет украшения "ручками захвата" - посмотрите, как он их реализует...
BeginnerCoderPete
Сначала я не увидел этого ответа, Спасибо.
BeginnerCoderPete
Я использую Winforms, а не WPF, или украшение все еще возможно на Winforms?
Graeme_Grant
Да, Winforms, а не WPF. Украшатели в WPF выполняют несколько иную задачу...
BeginnerCoderPete
Похоже, что в Google не очень много помощи для создания новых украшений на WinForms. Я, конечно, буду продолжать вникать в это дело, но в данный момент мне кажется, что это немного за пределами моего понимания.
Graeme_Grant
Посмотрите на мой последний комментарий re: "ручки захвата"...
BeginnerCoderPete
Мне придется по-настоящему сесть и прочесть. Я не могу найти, где он их создает и прикрепляет к чему-либо с первого взгляда. У меня все еще есть ощущение, что это немного выше моего понимания в данный момент :( чтение через это кажется ошеломляющим.