Меню сайта
Категории раздела
Разное
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Вторник, 14.05.2024, 09:32
Приветствую Вас Гость

Каталог статей

Главная » Статьи » Статьи » Разное

Делаем свои окна

Делаем свои окна
form

Чтобы бы вместо стандартного окна было своё нужно в свойствах формы изменить следующие параметры:
AutoSizeMode – GrowAndShrink (отключаем возможность менять размер окна)
FormBorderStyle – None (отключаем рамку)
BackgrounImage – наша новая форма
Opacity – прозрачность.

Далее нам нужно чтобы форма перемещалась мышью, для этого нужны обработчики событий нажатия и перемещения мыши (Form1_MouseDown, Form1_MouseMove).

 private void Form1_MouseDown(object sender, MouseEventArgs e)
 {
 mouseOffset = new Point(-e.X, -e.Y);
 }
 
 private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
 if (e.Button == MouseButtons.Left) //если по элементу управления двигаем мышь с зажатой левой...
 {
 Point mousePosition = Control.MousePosition; //...то получаем координаты
 mousePosition.Offset(mouseOffset.X, mouseOffset.Y); //смещает точку mouse_pos на указаную точку mouse_offset.X, mouse_offset.Y
 this.Location = mousePosition; //новые координаты окна
 }
 }

Данный код будет обеспечивать перемещение формы при нажатии мышью на неё, но если нажать на какой-то элемент управления и потащить – форма не сдвинется. Для устранения этой проблемы нужно добавить к элементам управления обработчики событий Form1_MouseDown, Form1_MouseMove, а также отдельно вычислять mouseOffset.

private void Form1_Load(object sender, EventArgs e)
 {
 
 foreach (Control control in Controls)//получаем коллекцию элементов управления находящиеся на форме
 {
 control.MouseDown += new MouseEventHandler(Form1_MouseDown);//все элементы управления обрабатывают
 control.MouseMove += new MouseEventHandler(Form1_MouseMove);//нажатие и передвижение мыши
 }
 
 }
 
 private void Form1_MouseDown(object sender, MouseEventArgs e)
 {
 if (sender == this) //нажали на форму...
 {
 mouseOffset = new Point(-e.X, -e.Y); //получаем координаты окна с минусом
 }
 else //...или на какойто элемент управления на форме
 {
 Control control=(Control)sender;
 mouseOffset = new Point(-e.X - control.Location.X, -e.Y - control.Location.Y);
 }
 }
 
 private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
 if (e.Button == MouseButtons.Left) //если по элементу управления двигаем мышь с зажатой левой...
 {
 Point mousePosition = Control.MousePosition; //...то получаем координаты
 mousePosition.Offset(mouseOffset.X, mouseOffset.Y); //смещает точку mouse_pos на указаную точку mouse_offset.X, mouse_offset.Y
 this.Location = mousePosition; //новые координаты окна
 }
 }

Control – определяет базовый класс для элементов управления, являющихся компонентами с визуальным представлением.
Класс Control реализует основные функциональные возможности, необходимые для классов, отображающих сведения
для пользователя. Он обрабатывает входные данные, полученные с клавиатуры и указывающих устройств.

Point.Offset – метод который смещает точку Point на указанное значение.

Control.Controls – получает коллекцию элементов управления, содержащихся в элементе управления.

Исходник

Категория: Разное | Добавил: admin (19.12.2011)
Просмотров: 409
Форма входа
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz