1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Таскание формы за элемент

Тема в разделе "Visual Basic", создана пользователем Adiost, 14 июн 2010.

Статус темы:
Закрыта.
  1. Adiost

    Adiost Гость

    Репутация:
    0
    Интересуюсь, как таскать форму за элемент? В форме отключен стиль окна
    Код:
    Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
    и нужно сделать так, что бы его можно было таскать за элемент, скажем, Panel1. В сети нашел код
    Код:
    Public BarX
    Public BarY
    
    Private Sub imgMove_MouseDown(Button As Integer, Shift As Integer, _
    X As Single, Y As Single) 
    If Button = 1 Then BarY = Y: BarX = X 
    End Sub
    
    Private Sub imgMove_MouseMove(Button As Integer, Shift As Integer, _
    X As Single, Y As Single)
    
    If Button = 1 Then 
    frmMain.Top = frmMain.Top + Y - BarY
    frmMain.Left = frmMain.Left + X - BarX
    end if 
    
    End Sub
    но он к сожалению не работает, как бы я его не насиловал. Может кто подсказать?
     
  2. etc

    etc Гость

    Репутация:
    0
    Всетаки у вэбэ странный синтаксис.
     
  3. Adiost

    Adiost Гость

    Репутация:
    0
    etc, он элементарный :gifts:
    Но для реализации некоторых идей надо хорошо пораскинуть мозгами... В случае с моей идеей я мозги еще туда куда надо не закинул D:
     
  4. etc

    etc Гость

    Репутация:
    0
    Дебажить пробовали?
     
  5. Adiost

    Adiost Гость

    Репутация:
    0
    Вы про тот код? Да ошибок нет, он попросту не работает. Принцип я его понял, разве что не знаю, что есть "Button". То что он объявлен, это понятно, но что задает его значение? Если есть код
    Код:
    If Button = 1
    значит что-то задает значение этому баттону. Что?
     
  6. etc

    etc Гость

    Репутация:
    0
    Button это параметер, выставляем его вызывающая функция, это не интересно.
    Интересно заходит ли в ваши обработчики и как они работают.
     
  7. Adiost

    Adiost Гость

    Репутация:
    0
    etc
    Да не работает вообще. Пытаюсь таскать элемент, в логе тихо.
     
  8. etc

    etc Гость

    Репутация:
    0
    Обработчики привязаны? или просто код копипастили?
     
  9. Adiost

    Adiost Гость

    Репутация:
    0
    Я не очень опытен, честно сказать... Код тупо копипастил, но ошибок вроде никаких нету.
    Кстати, забыл сказать, работаю в VB10
     
  10. etc

    etc Гость

    Репутация:
    0
    Надо привязать, в дизайнере в свойствах важей картинки указать обработчики.
     
  11. Adiost

    Adiost Гость

    Репутация:
    0
    как? :gifts:
     
  12. etc

    etc Гость

    Репутация:
    0
    Яж сказал как.
     
  13. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    у Panel1 искать события типа
     
  14. Adiost

    Adiost Гость

    Репутация:
    0
    А можно код? :rolleyes:
     
  15. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    какой код? ты за панель двигать хочешь, значит, у панели ставишь обработчики событий мыши (MouseDown, MouseMove) - те, которые писал выше.
     
  16. etc

    etc Гость

    Репутация:
    0
    Учиться надо.
     
  17. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    судя по названию imgMove, в оргинале должно было быть привязано к картинке

    Добавлено: может ли панель обработать эти события - смотри сам)
     
  18. Adiost

    Adiost Гость

    Репутация:
    0
    Только теперь сообразил. С обработчиками все в порядке, настроил под себя.
    В любом случае, думаю, должен же быть более простой вариант... Тот код скорее больше подходит для VB6, а тут уж .NET, не может быть так громоздко.
     
  19. Tanya

    Tanya Гость

    Репутация:
    0
    Код:
    Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
    BarX = e.X
    BarY = e.Y
    End If
    End Sub
    
    
    Private Sub Panel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
    Me.Top = Me.Top + e.Y - BarY
    Me.Left = Me.Left + e.X - BarX
    End If
    End Sub
    Более простой вариант:
    Me.ТаскатьФормуЗаЭлемент = True

    Шутка )))
     
  20. etc

    etc Гость

    Репутация:
    0
    Товарищу нада 1 кнопка нажал и работает.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей