Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в C# перетаскивать панель, в пределах формы или панели 
V
    Опции темы
Teran
  Дата 29.5.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Как можно на языке c# реализовать перетаскивание панельки в пределах другой панельки с одного места на другое ?
  smile  smile   smile 
 
на Delphi это делаетяс всего двумя функциями:
Код

  ReleaseCapture;
  Panel1.Perform(WM_SYSCOMMAND, $F012, 0);
 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
ivashkanet
Дата 29.5.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Вопрос понял не сильно, но...
Цепляешься к событиям Panel.MouseDown и Panel.MouseUp, и двигаешь по событию MouseMove.
P.S. Пример нужен?
  

Это сообщение отредактировал(а) ivashkanet - 29.5.2006, 13:44
PM MAIL WWW ICQ   Вверх
Teran
Дата 29.5.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(ivashkanet @  29.5.2006,  13:43 Найти цитируемый пост)
Пример нужен?

да

Добавлено @ 13:59 
я просто не знаю какими функциями пользоваться 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
ivashkanet
Дата 29.5.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Лови  smile (только что настрочил)
Код

        bool MouseState = false;
        Point PrevMousePos;
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            PrevMousePos = new Point(e.X, e.Y);
            if (e.Button == MouseButtons.Left) { this.MouseState = true; } 
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (this.MouseState)
            {
                int dx = e.X -PrevMousePos.X;
                int dy = e.Y - PrevMousePos.Y;
                panel1.Location = new Point(panel1.Location.X + dx, panel1.Location.Y + dy);
            }
        }

        private void panel1_MouseUp(object sender, MouseEventArgs e)
        { if (e.Button == MouseButtons.Left) { this.MouseState = false; } }


Добавлено @ 14:09 
Точно так же со всеми остальными объектами  smile  
PM MAIL WWW ICQ   Вверх
Teran
Дата 29.5.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Огромное спасибо за код!

Хочу указать нужную панель через объект но чтото не выходит:
Код

....  
      private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (this.MouseState)
            {
                int dx = e.X -PrevMousePos.X;
                int dy = e.Y - PrevMousePos.Y;
                [B](Panel)sender.Location [/B]= new Point((Panel)sender.Location.X + dx, (Panel)sender.Location.Y + dy);
            }
        }
.....


Добавлено @ 14:21 
 smile 
Получилось
нужно просто было скобки добавить:
Код

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (this.MouseState)
            {
                int dx = e.X -PrevMousePos.X;
                int dy = e.Y - PrevMousePos.Y;
                ((Panel)sender).Location = new Point(((Panel)sender).Location.X + dx, ((Panel)sender).Location.Y + dy);            }
        }

 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.