Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44

Какое событие происходит при щелчке по заголовку формы?

19.08.2011, 17:05. Показов 6032. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Собственно начну издалека. Есть MDI-форма, на ней панель Workplace а в ней много-много дочерних по отношению к главной форм (добавлены в Workplace.Controls). Нужно чтобы при переключении на новую форму её заголовок становился активным. Для этого я решил отслеживать клики по форме и её заголовку.

Вопрос: как отследить клик по заголовку?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2011, 17:05
Ответы с готовыми решениями:

Какое событие срабатывает в ListView при щелчке мышью не на элементе списка?
У меня еще одна проблема с ListView Дано: ListView1 и в нем 3 элемента Когда я перемещаюсь по элементам, все нормально, каждый из...

Какое событие формы происходит один раз после ее разворачивания?
Здравствуйте. Пожалуйста, помогите с проблемой! Какой обработчик событий формы необходим использовать, чтобы при разворачивании формы...

Какое событие происходит при высвобождении Control
Привет! У меня есть одна единственная модель и у нее много ее контролов, через которые она может управляться. Контролы получают от...

14
Заблокирован
19.08.2011, 17:16
Цитата Сообщение от the MIKron Посмотреть сообщение
Какое событие происходит при щелчке по заголовку формы?
C#
1
2
3
4
5
6
7
8
9
10
11
12
       public Form1()
        {
            InitializeComponent();
 
            this.Resize += new System.EventHandler(this.Form1_Resize);
        }
 
        
        private void Form1_Resize(object sender, EventArgs e)
        {
            // это.
        }
0
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44
20.08.2011, 03:28  [ТС]
Нет, ресайз не происходит. По крайней мере, у меня не ловится при щелчке по заголовку.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.08.2011, 03:36
запусти Spy++ отлови и посмотри)

Добавлено через 20 секунд
там что-то WM_N...
0
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44
20.08.2011, 04:52  [ТС]
Вроде бы, происходит событие WM_MOUSEACTIVATE. И что мне дальше делать с этим знанием?
0
Заблокирован
20.08.2011, 04:54
Цитата Сообщение от the MIKron Посмотреть сообщение
Нет, ресайз не происходит. По крайней мере, у меня не ловится при щелчке по заголовку.
Я решил, что ты имел ввиду двойной щелчок.
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
20.08.2011, 12:03
Цитата Сообщение от the MIKron Посмотреть сообщение
Нужно чтобы при переключении на новую форму её заголовок становился активным.
А разве при переключении на новую форму заголовок активным не становится?
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
21.08.2011, 01:52
Цитата Сообщение от Евгений М. Посмотреть сообщение
А разве при переключении на новую форму заголовок активным не становится?
По идее так и происходит, не понимаю в чём проблема. Может не правильно объяснили?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.08.2011, 02:40
Евгений М., прав, так что объясните толком что вам надо? Меня всегда в таких ситуациях выручал Spy++
0
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44
21.08.2011, 04:31  [ТС]
Так в том то и дело, что при переключении на новую форму заголовок не становится активным, поэтому приходится имитировать этот процесс. Формы добавляю так:
C#
1
2
3
4
5
form.MdiParent = this;
form.Show();
WorkplacePanel.Controls.Add(form);
form.BringToFront();
form.Location = new Point(0, 0);
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
21.08.2011, 06:28
Цитата Сообщение от the MIKron Посмотреть сообщение
при переключении на новую форму заголовок не становится активным
Под переключением Вы подразумеваете "нажатие кнопки мыши на форме"?
0
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44
21.08.2011, 06:58  [ТС]
И на её заголовке. Вся проблема собственно в заголовке, поскольку "нажатие кнопки мыши на форме" я отлавливаю и "активирую форму" заново добавляя её в коллекцию Controls:
C#
1
2
3
4
5
6
7
8
void Form_MouseClick(object sender, MouseEventArgs e) 
        {
            Form f = ((Form)sender);
            f.MdiParent = this;
            f.Show();
            WorkplacePanel.Controls.Add(f);
            f.BringToFront();
        }
А вот при щелчке по ее заголовку ничего не происходит.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
21.08.2011, 09:35
Лучший ответ Сообщение было отмечено как решение

Решение

Какое событие происходит при щелчке по заголовку формы?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        protected override void WndProc(ref Message m)
        {
            const int WM_NCLBUTTONDBLCLK = 0x00A3;
            base.WndProc(ref m);
            switch (m.Msg)
            {
                case WM_NCLBUTTONDBLCLK:
                    MessageBox.Show("Произошел двойной щелчок вне клиентской области");
                    return;
            }
        }
    }
}
Добавлено через 2 минуты
Это уже одинарный.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        protected override void WndProc(ref Message m)
        {
            //const int WM_NCLBUTTONDBLCLK = 0x00A3;
            const int WM_NCLBUTTONDOWN = 0x00A1;
            base.WndProc(ref m);
            switch (m.Msg)
            {
               // case WM_NCLBUTTONDBLCLK:
               //    MessageBox.Show("Произошел двойной щелчок вне клиентской области");
               //     return;
                case WM_NCLBUTTONDOWN:
                    MessageBox.Show("Произошел щелчок вне клиентской области");
                    return;
            }
        }
    }
}
3
21.08.2011, 09:49

Не по теме:

Прикольно
C#
1
2
3
4
5
6
7
8
9
10
11
12
       protected override void WndProc(ref Message m)
        {
            const int WM_NCLBUTTONDBLCLK = 0x00A3;          
            base.WndProc(ref m);
            switch (m.Msg)
            {
                 case WM_NCLBUTTONDBLCLK:
                    this.WindowState = FormWindowState.Normal;                  
                     return;
               
            }
        }

0
1 / 1 / 0
Регистрация: 13.07.2011
Сообщений: 44
21.08.2011, 10:19  [ТС]
Спасибо большее, как вариант это можно реализовать. Но проблема в том, что дочерних форм достаточно много (типов) и для каждого класса придется переопределять процедуру WndProc (хотя можно все это провернуть и с наследованием). Но все же...

Вопрос: а можно проворачивать все это, допустим, с родительской формы? (т.е. я имею что будь то надо написать обработчик события это можно было бы сделать из родительской формы (например, Form.Shown += new EventHandler()), а здесь переопределение, т.е. "снаружи" ничего особо не предпримешь, а было бы удобнее автоматически все делать сразу при добавлении формы в контрол).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2011, 10:19
Помогаю со студенческими работами здесь

Какое событие происходит при разворачивании окна
Привет! Как поменять стандартное закрывание окна, на скрытие (пропадание из панели задач), а потом по кнопке опять восстановление...

Подскажите какое событие происходит при импорте контрагентов из 1С
Всем привет. Ситуация такая, при импорте контрагентов из 1С создаются пользователи, логин задается из мыла кусок до @. Мне нужно изменить...

Какое событие происходит при прокрутке колесика мыши?
Здравствуйте! Подскажите, какое событие происходит при прокрутке колесика мыши? И как узнать, в какую сторону его прокрутили?

Какое событие происходит при закрытии окна выбора файла?
Может кто-то знает, какое событие происходит при закрытии окна выбора файла? onChange точно не подходит, оно возникает при изменении value...

Как исключить ошибку при щелчке по заголовку столбца грида
Добрый день. Выделение всей строки у меня происходит так: private void MainTable_CellMouseClick(object sender,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru