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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dock формы, "липкие окна" 
:(
    Опции темы
IvanProg
Дата 30.3.2008, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребята привет.
Как реализовать так называемые "липкие окна" на C#? Т.е. чтобы диалоговое окно "прилипало" к главному окну, если первое находится в заданной области от второго.
PM MAIL   Вверх
VisualProgrammerNET
Дата 30.3.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


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

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



Ну вот накидал тут простейший примерчик того, как форма два прилипает к форме один справа:
(пример сырой, но показательный =)

Form1:
Код

namespace Vingrad1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.f2 = new Form2(this);
            f2.Show();
        }
        Form2 f2 = null;        
    }
}


Form2:
Код

namespace Vingrad1
{
    public partial class Form2 : Form
    {
        public Form2(Form1 f1)
        {
            InitializeComponent();
            this.f1 = f1;
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        Form1 f1 = null;

        private void Form2_Move(object sender, EventArgs e)
        {
            if (this.Location.X > f1.Location.X + f1.Width - 50 && this.Location.X <= f1.Location.X + f1.Width + 50 && (this.Location.Y > f1.Location.Y - 10 && this.Location.Y < f1.Location.Y + f1.Height + 10))
            {
                this.SetBounds(f1.Location.X + f1.Width, this.Location.Y, this.Width, this.Height);
            }
        }
                
    }
}

В этом примере форму два так же можно двигать по оси Y и она при этом останется прилепленной к форме 1.

Если заменить всего один параметр в SetBounds()...
Код

this.SetBounds(f1.Location.X + f1.Width, f1.Location.Y, this.Width, this.Height);

... то форма два закрепится в правой верхней точки формы один.

Минус в том, что при перемещении формы два, когда она прилеплена, то форма два мерзко мигает =) Ну тут уже надо химичить более глубоко  smile 

Это сообщение отредактировал(а) VisualProgrammerNET - 30.3.2008, 10:24


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

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


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

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


 




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


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

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