| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Претаскивание формы |
| Автор: Lеstat 3.9.2006, 19:54 |
| Вобщем сделал форму. Убрал у нее все кнопки (закрыть, свернуть и тд... те которые в правом верхнем углу) Убрал все шапку... вобще сделал из нее серый прямоугольник Потом натащил на нее красивую картинку с нарисованными кнопками Натащил на нарисованные кнопки обычные кнопки Сделал эти кнопки прозрачными и границу у них убрал Теперь хочу сделать так, чтобы эту форму можно было перетаскивать мышью Что для этого можно сделать? И еще иногда когда на кнопку прозрачную наводишь мышь, нажимаешь, отводишь мышь в сторону, отпускаешь и переключаешься на какое-нибудь другое окно, то на форме виден контур кнопки... хотя я его на 0 поставил! как от этого можно избавиться? |
| Автор: mr.DUDA 3.9.2006, 20:29 |
Обрабатывать MouseMove, смещать форму при нажатой левой кнопке мыши. Смещение вычислять как разность между двумя Point-ами - тем, который был при предыдущем MouseMove, и текущим. |
| Автор: Lеstat 3.9.2006, 21:54 | ||
| Спасибо! Я с формами мало вожусь, поэтому сам сразу не догнал. Решение довольно простое Вобщем то что у меня получилось хочу оставить тут... может кому пригодится
у меня на форме есть элементы, которые при нажатии на них, тоже должны перемещать форму в событиях этих элементов нужно просто выбрать из выпадающего списка соответствующие процедуры для формы если мышь на них попадет, то форма все равно будет перемещаться Заметил побочный эффект! У меня форма без шапки и на ее фон повешена картинка... вобщем такой эффект как у курсора бывает... двигаю форму, а за ней хвост =) быстро пропадает, но заметен От этого можно как-нибудь избавиться? |
| Автор: ivashkanet 4.9.2006, 08:33 | ||||
Lеstat, кривовато как-то Ты ведь делаешь обработку в самой форме. Так и пользуйся этим
P.S. Я такой код уже http://forum.vingrad.ru/index.php?showtopic=98227&view=findpost&p=746458. Хотя он и 1:0,999999 с твоим |
| Автор: $tatic 4.9.2006, 10:02 |
| ivashkanet, это он приводит разные виды получения объекта формы Lеstat, от хвоста ты наверное не избавишься, это GDI+ с виндой тормозят А код можно упростить за счет того, что у структуры Point есть метод Subtract (в 2.0) и переопределен оператор "-". |
| Автор: ivashkanet 4.9.2006, 10:07 |
Не думаю Тянет прилично ресурсов (нужно ведь найти форму, по имени |
| Автор: Lеstat 4.9.2006, 16:33 | ||||||
я почему-то не догнал сразу так попробовать... в C# недавно... пробовал Form1.Location... не получилось поэтому еще долго искал как получить х и у пока не наткнулся на ((Form1)Application.OpenForms["Form1"]) кстати когда переписал через this, то хвост почти исчез... виден, но практически незаметен |