Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208

Панель элементов для создания формы

06.04.2021, 21:27. Показов 3888. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Не могу найти(создать) в визуалстудио(визуал бейсик) элемент(панелька) такой как в экселе, который появляется справа от рабочей области при нажатии например кнопки Справочники, Тезаурус и при этом его можно перемещать, а при двойном клике он опять встраивается в рабочую область. Фото приклепляю.
Спасибо.
Миниатюры
Панель элементов для создания формы   Панель элементов для создания формы  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2021, 21:27
Ответы с готовыми решениями:

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

Вынести ярлык для формы на панель инструментов
Добрый день. у меня есть форма в VBA с макросами. можно ли каким либо способом вынести ярлык на нее на панель Excel, чтоб не открывать...

Аргумент для создания формы
Привет всем. Подскажите пожалуйста, как передавать аргумент при создании формы. У меня есть одна форма авторизации, которая...

19
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
10.04.2021, 22:53  [ТС]
Похоже это форма с отключенным в свойствах формы бордюром(FormBorderStyle). И на неё накиданы элементы.
Сделал. Но опять проблема. Создал главную mdi форму, затем в неё поместил форму. Но она находится под элементами(кнопками и меню). Перещёлкал все настройки в свойствах, но не смог найти как её позиционировать относительно верхнего меню, например и вывести на передний план. Она не перетаскивается к тому же. Менять ширину позволяет, перетащить внутри mdi формы не получается. Во-первых не видно из-за меню бордюра. А когда я его вообще убрал то тем более.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Dim frm As New Form2
 
        frm.MdiParent = Me
        frm.Show()
 
    End Sub
 
End Class
На форме1 накиданы меню и TabPage.
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,735
Записей в блоге: 1
11.04.2021, 00:17
Geo5, я конечно не уверен, но по моему стандартные формы так делать не умеют. Для реализации того, что Вы хотите, придётся написать свой класс формы. То есть полностью реализовать "липучесть", автоматическое сворачивание (с анимацией), "выталкивание" других форм при закреплении на одной из сторон родительской формы и т.п.
1
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
11.04.2021, 19:29  [ТС]
Спасибо. Поняли что я хочу. А как вывести вторую форму в определённое место? В свойствах я не нашёл. Тоже программно? Каким кодом? И может подскажете, где прочитать про то что вы написали или как грамотно сформировать поисковый запрос про выталкивание и липучесть. Спасибо.

Добавлено через 8 минут
Нашёл на этом форуме липучесть.
VB.NET
1
2
3
4
Private Sub Form2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        Me.Capture = False
        Me.WndProc(Message.Create(Me.Handle, &HA1, New IntPtr(2), IntPtr.Zero))
    End Sub
Липнет. Теперь можно за форму хватать. Осталось позиционирование при запуске и выталкивание.
0
3257 / 3273 / 556
Регистрация: 17.02.2019
Сообщений: 5,182
11.04.2021, 19:46
А если MDI-форму попробовать. А в ней дочерние формы. https://docs.microsoft.com/ru-... esktop-4.8
1
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
11.04.2021, 21:02  [ТС]
Спасибо за ссылку. Но у меня и есть MDI. Да в эксель это и реализовано похоже, что так. Я дальше нарыл. Позиционирование такое дочерней формы: в свойствах выводимой формы StartPosition ставим в Manual и только тогда действует свойство Location, в котором ставим нужные X,Y в числовом виде. А один "крестик" закрытия получаем в свойствах FormBorderStyle выставив SizableToolWindow
Остаётся теперь спозиционировать относительно TabPage, ну и "выталкивание" допустим текстбокса и "вклеивание" по клику мыши в нужное место. И будет как в эксель.
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
11.04.2021, 21:25
Пример. Собрал на скорую руку. М.б. будет в чем-то полезен.
Миниатюры
Панель элементов для создания формы  
Вложения
Тип файла: rar tstAddiForm.rar (84.6 Кб, 18 просмотров)
3
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,735
Записей в блоге: 1
11.04.2021, 22:49
Ещё можно попробовать такой фокус: добавить на родительскую форму меню ToolStrip и в начале скрыть его; когда additionalPanel сближается с краем клиентской области родительской формы отображать этот ToolStrip, указав ему соответствующий Dock, а additionalPanel скрывать.
Примерно так.
Кликните здесь для просмотра всего текста
VB.NET
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
    Private Sub additionalPanel_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.LocationChanged
        If Me.MdiParent Is Nothing Then Exit Sub
        Dim parFrm As MDIParent1 = Me.MdiParent
        If Me.Location.Y < parFrm.ClientRectangle.Y Then
            parFrm.ToolStrip1.Dock = DockStyle.Top
            parFrm.ToolStrip1.Visible = True
            Me.Hide()
        End If
        If Me.Location.Y + Me.Height > parFrm.ClientRectangle.Height Then
            parFrm.ToolStrip1.Dock = DockStyle.Bottom
            parFrm.ToolStrip1.Visible = True
            Me.Hide()
        End If
        If Me.Location.X < parFrm.ClientRectangle.X Then
            parFrm.ToolStrip1.Dock = DockStyle.Left
            parFrm.ToolStrip1.Visible = True
            Me.Hide()
        End If
        If Me.Location.X + Me.Width > parFrm.ClientRectangle.Width Then
            parFrm.ToolStrip1.Dock = DockStyle.Right
            parFrm.ToolStrip1.Visible = True
            Me.Hide()
        End If
    End Sub

Остаётся передать коллекцию контролов из формы в меню или перенастроить отображение контролов в меню как в форме. С откреплением ToolStrip можно поступить аналогично, т.е. при смещении на некую дистанцию показывать форму, а менюшку прятать. Ну и режим перемещения тоже перенапрявлять.
3
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
12.04.2021, 14:22
Еще один вариант компоновки.
Вложения
Тип файла: rar tstAddiForm2.rar (156.4 Кб, 18 просмотров)
1
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
12.04.2021, 20:24  [ТС]
Спасибо. Это надо переварить.
Я посмотрел в экселе на эту форму. Она наверное не MDI. Т.к. выходит за пределы родительской формы. И ещё там фишка такая, что если двигать плавно форму2, то она выходит за пределы формы1, а если быстро её шибануть в стенку, то она вклеивается.
Но это уже слишком. Наверное надо для начала при переключении вкладок TabPage ограничится просто появлением форм 2 и т.д. в нужном месте, на первом плане и вытеснением текстбокса. А примеры в архиве не открываются у меня. Может просто на основные моменты текстом код?
Спасибо всем. Но как на первый план форму2 вывести (в свойствах). На этом форуме читал, но чё-то не то.
0
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
13.04.2021, 20:04  [ТС]
Ovva спасибо, круто. Открылся твой проект.

Uswer, спасибо. Интересно.
January29, спасибо.

Всё-таки как в свойствах вывести дочернюю форму на передний план, чтобы она была сверху текстбокса и др. элементов. Или кодом как.

Добавлено через 22 минуты
Я нашёл тему с названием "форму-внучку на передний план". И туда задал вопрос про вывод на передний план. Там тема в 2018 создана и никто не ответил. Может посмотрите? я фото скинул туда.

Добавлено через 5 минут
Сорри, я в раздел С# вопрос задал.
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
13.04.2021, 21:00
Geo5, вы бы выложили ваш проект, а то так можно долго гадать.
1
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
13.04.2021, 21:05  [ТС]
Вот.
Вложения
Тип файла: rar MDI_FORMA.rar (59.8 Кб, 12 просмотров)
0
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
13.04.2021, 21:12  [ТС]
Форма 2 под кнопкой. А надо сверху
Миниатюры
Панель элементов для создания формы  
0
3257 / 3273 / 556
Регистрация: 17.02.2019
Сообщений: 5,182
13.04.2021, 21:20
А если методом BringToFront форму вывести на верх https://docs.microsoft.com/ru-... mework-4.8
1
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
13.04.2021, 21:57
Лучший ответ Сообщение было отмечено Geo5 как решение

Решение

Geo5, здесь ошибка принципиальная, если вы используете MDI-интерфейс, то должны понимать, как и для чего его используют. MDI это многодокументный интерфейс и в рабочем поле не должно быть никаких кнопок и т.п. Для наглядного представления можно рассмотреть Excel. Нужен новый документ, нажали на кнопку - появился документ, нажали еще раз – еще документ и т.д. Все документы - новые, загруженные плавают в одном поле и имеют один прототип.
Наиболее часто используют SDI - интерфейс одного документа. Вот там, в рабочем поле вы можете размещать кнопки, списки, сетки и т.д. При этом из главной формы вы можете открывать вспомогательные формы.
В моих примерах, приведенных в этом обсуждении, используются как MDI (первый пример) так и SDI (второй пример) интерфейсы.
1
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
14.04.2021, 20:15  [ТС]
Спасибо. Очень доходчиво объяснили.
С передним планом отложим пока. В принципе это можно сделать в MDI? Хочу всё-таки MDI оставить с учётом замечаний.

Вот ещё загвоздка. Форма MDI. Табконтролл в ней с двумя вкладками. При переключении вкладок надо открывать форму2 и форму3 дочерние (эта самая панелька как в эксель) Но при этом, чтобы поочерёдно( при переключении вкладок ) закрывались или скрывались то форма2 то форма3. Сделал. Получилось. Переключаю вкладки и формы появляются, но не скрыть предыдущую форму. И что интересно, если объявить переменную на форму3 внутри модуля, то форма3 размножается при каждом переключении вкладки2.А я объявил голобальную и форма перестала размножаться. Правильно?
Вот код. Как скрыть формы?
VB.NET
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
Public Class Form1
 
    Dim frm2 As New Form2
    Dim frm3 As New Form3
    
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim frm As New Form2
        frm.MdiParent = Me
        frm.Show()
    End Sub
 
    Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
 
    End Sub
 
    Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
        If TabControl1.SelectedIndex = 1 Then
            'Dim frm3 As New Form3 Если здесь(внутри) объявить переменную, а не глобально, то форма3 будет открываться повторно(множиться)
 
            frm3.MdiParent = Me
 
            Form2.Hide()
            frm3.Show()
 
 
        End If
    End Sub
End Class
0
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
14.04.2021, 20:24  [ТС]
Вот фото к коду.
Хочу всё-таки в итоге как в эксель пенельку сделать.
Миниатюры
Панель элементов для создания формы  
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,735
Записей в блоге: 1
14.04.2021, 22:24
Лучший ответ Сообщение было отмечено Geo5 как решение

Решение

Geo5, не изобретайте велосипед. Воспользуйтесь библиотекой DockPanel Suite от WeiFen Luo. Так же эту библиотеку можно поискать на sourceforge.net по словам DockPanel Suite. Тут кратенькая инструкция как и что. Удачи!
2
20 / 20 / 1
Регистрация: 06.04.2021
Сообщений: 208
15.04.2021, 20:53  [ТС]
Uswer, Ovva спасибо. Понял. Надо поизучать. И для моего проекта не нужна форма. Решил применить элемент Panel. А форма для моей задачи это как говорится: "микроскопом гвозди забивать". Просто начал с формой делать и интересно стало. Теперь имею представление для чего форма и что можно без неё обойтись.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2021, 20:53
Помогаю со студенческими работами здесь

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

Написать программу для создания формы
Нужно написать программу на любом языке программирования, которая использует WinApi для создания основной формы программы

Хороший модуль для создания формы
Посоветуйте хороший модуль для создания формы, работающей примерно так: http://evgeniypopov.com/files/38/test38/form.php

Подскажите плагин/модуль/компонент для создания формы
Подскажите пожалуйста плагин/модуль/компонент для создания формы вот такого типа(можно сказать копию) ...

Нужен совет для создания простой игры, используя формы
День добрый, господа. Зародилась идея создать игру в C++ Builder используя формы. Возможно вы снова тяжело вздохнете с мыслью: &quot;Опять!...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru