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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таскание, изменение размеров формы 
V
    Опции темы
uranpro
  Дата 29.7.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



Добре!
Поставил у формы свойство FormBorderStyle = None.
создал панельку сверху, разместил на ней кнопку выхода.
снизу создал StatusStrip.

вопросы:
0. Как определить нажата ли левая кнопка мыши(лучше пример определения для любой кнопки=)) ?
1. Как таскать форму, удерживая кнопку мыши на панельке?
2. Как изменять размер формы, удерживая кнопку мыши на StatusStrip слева?

Спасибо заранее!


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Certain
Дата 29.7.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: 1
Всего: 4



0. Практически у каждого контрола есть событие MouseDown
Код

private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                //левая кнопка мыши
            }
        }

Смотри перечисление MouseButtons

1. Не совсем понятно в каких целях это можно использовать... Если только приложение будет занимать весь экран, тогда зачем перетаскивание... Почему убрали бордер? Я бы на Вашем месте сделал так 
    у формы свойство FormBorderStyle = SizableToolWindow, из Text удаляем всё, ControlBox = true, ShowIcon=false, MaximizeBox=false, MinimizeBox=false.

2. Зачем усложнять, такого же эффекта можно добиться и у формы
    ставим свойство формы ControlBox в false и из Text удаляем весь текст, FormBorderStyle ставим Sizeble

Это сообщение отредактировал(а) Certain - 29.7.2009, 11:45
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
uranpro
Дата 29.7.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



Certain, я уже нашел ответ, спасибо!
Для чего это надо ?
у меня есть приложение:
user posted image

надеюсь, теперь понятно =) (для красоты)

ответы:
Код

using System.Runtime.InteropServices;

...

        [DllImport("User32.dll")]
        static extern short GetKeyState(int nVirtKey);
        private const ushort MASK = 0x8000;
        private int OldX;
        private int OldY;

...

        private void Head_DoubleClick(object sender, EventArgs e)
        {
            if (WindowState == FormWindowState.Normal)
                WindowState = FormWindowState.Maximized;
            else WindowState = FormWindowState.Normal;
        }

        private void Head_MouseMove(object sender, MouseEventArgs e)
        {
            if (((GetKeyState(1) & MASK) > 0) & WindowState == FormWindowState.Normal)
            {
                Top = Top + e.Y - OldY;
                Left = Left + e.X - OldX;
            }
            else
            {
                OldX = e.X;
                OldY = e.Y;
            }
        }

        private void pResize_MouseMove(object sender, MouseEventArgs e)
        {
            if (((GetKeyState(1) & MASK) > 0) & WindowState == FormWindowState.Normal)
            {
                Height = Height + e.Y - OldY;
                Width = Width + e.X - OldX;
            }
            else
            {
                OldX = e.X;
                OldY = e.Y;
            }
        }


PS: Значение кнопок смотрел в Delphi, unit Windows =) 
VK_LBUTTON = 1, и из-за этого GetKeyState(1).

Это сообщение отредактировал(а) uranpro - 29.7.2009, 19:51


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

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


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

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


 




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


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

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