Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
#1

Развертывание дочерней формы MDI на весь экран - Visual Basic .NET

08.09.2016, 14:41. Просмотров 362. Ответов 13
Метки нет (Все метки)

Всем привет!
Помогите кто знает.
При развертывание дочерней формы на весь экран. Кнопки закрытия и сворачивания в заголовке формы залазят на MenuStrip появляются над ней, сама же MenuStrip опускается ниже.
Как сделать что бы при нажатии кнопки на весь экран, форма разворачивалась ниже меню.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2016, 14:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Развертывание дочерней формы MDI на весь экран (Visual Basic .NET):

Как передать данные из MDI дочерней формы к Родительской форме? - Visual Basic .NET
У меня есть проект, который содержит основную форму/Main/.Из главной формы с помощью кнопки я открываю form2 Dim Form As New Form2() ...

MDI-формы. Максимизация окна при загрузке формы - Visual Basic .NET
Товарищи программисты! Случилась следующая проблема: я делаю приложение, использующее MDI-формы. Условия их работы таковы: 1. В один...

Как сделать прозрачность дочерней формы - Visual Basic .NET
Доброго времени суток. Попытался настроить прозрачность с помощью opacity, форма осталась видимой на 100% подскажите пожалуйста, в чем...

Заполнение DataGrid при закрытии дочерней формы - Visual Basic .NET
Доброго времени суток, коллеги. Подскажите с хитрой задачкой. Есть MDI-приложение. Через менюшку вызываю дочернюю форму, на которой...

Как передать значение переменной дочерней формы в основную - Visual Basic .NET
Добрый день народ. Подскажите пожалуйста, как можно передать данные переменной дочерней формы в основную. Например банальный пример, я ввел...

Отключение скроллбаров у MDI-формы - Visual Basic .NET
Всем привет. Суть вопроса такова: Есть MDI-форма. При старте грузятся еще несколько дочек со всякими "ахтунгами". При полноэкранном...

13
Orlangur1991
783 / 717 / 163
Регистрация: 28.11.2014
Сообщений: 1,191
08.09.2016, 15:24 #2
alle380, покажи скрин
0
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
08.09.2016, 17:45 #3
а в роли MDI контейнера кто выступает? и не затазит ли этот контейнер под ваше меню?

Добавлено через 59 секунд
alle380, скрин покажи...
0
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
08.09.2016, 18:42  [ТС] #4
Вот скрин.
0
Миниатюры
Развертывание дочерней формы MDI на весь экран  
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
08.09.2016, 18:44  [ТС] #5
Скрин при открытии.
0
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
08.09.2016, 18:49  [ТС] #6
второй
0
Миниатюры
Развертывание дочерней формы MDI на весь экран  
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
08.09.2016, 19:25 #7
alle380, добавьте панель на форму,чтоб Dock=Fill был ниже ваших ToolBar'ов и выставьте в коде MDIcontainer на Panel1... и тогда получится что кнопки будут наверху панели, то-есть ниже ваших ToolBar'ов
0
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
08.09.2016, 19:36 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
не с панелью я погоречился, она в роли контейнера не может учавствовать.

Могу предложить такой вариант:
vb.net
1
2
3
4
        Me.IsMdiContainer = True
        Form2.MdiParent = Me
        Form2.Show()
        Form2.Dock = DockStyle.Fill
Но при этом заголовок формы виден, вы можете убрать кнопки вообще (ControlBox=False), но для сворачивания формы вам придется делать свои дополнительные кнопки.
1
Миниатюры
Развертывание дочерней формы MDI на весь экран  
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
10.09.2016, 20:14  [ТС] #9
Спасибо! В принципе вариант. Осталось только сделать аналогичные кнопки.

Добавлено через 29 минут
К стати как туда закинуть кнопки?
0
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
10.09.2016, 21:00 #10
alle380, куда?
0
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
10.09.2016, 21:24 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
вот так?
Развертывание дочерней формы MDI на весь экран
вызов формы
vb.net
1
2
3
4
5
6
Me.IsMdiContainer = True
        Form2.MdiParent = Me
        Form2.Show()
        Form2.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        Form2.Dock = DockStyle.Fill
        Form2.Panel1.Visible = True

код формы-2 (на ней панель и две кнопки в ней)
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form2
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Close()
    End Sub
 
    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Me.Dock = DockStyle.None
        FormBorderStyle = Windows.Forms.FormBorderStyle.SizableToolWindow
        Panel1.Visible = False
        Width = Form1.Width - 50
        Height = Form1.Height - 100
    End Sub
End Class
0
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
10.09.2016, 22:58  [ТС] #12
Пробовал сделать так. Почему не работает?

vb.net
1
2
3
4
5
6
7
8
 Private Sub FormShow1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize, MyBase.MaximumSizeChanged
    
        If Me.WindowState = FormWindowState.Maximized Then
 
            Me.Dock = DockStyle.Fill
 
        End If
    End Sub
0
Yury Komar
Модератор
2266 / 2071 / 328
Регистрация: 27.01.2014
Сообщений: 3,636
Завершенные тесты: 1
11.09.2016, 07:17 #13
а что именно не работает?
0
alle380
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 49
11.09.2016, 09:07  [ТС] #14
При нажатии кнопки на весь экран, разворачивается также как в моих скринах. Может в как то можно задать этой кнопке другие действия кроме разворачивания?

Добавлено через 24 минуты
Нашел на форуме.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Public Class Form1
 
    Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.Style = cp.Style And Not &HC00000
            Return cp
        End Get
    End Property
 
    Private m_WindowState As FormWindowState = FormWindowState.Normal
    Private m_FormSizeAndLocation As Rectangle = Rectangle.Empty
 
    Private Sub ChangeWindowState(ByVal p_NewState As FormWindowState)
        Me.WindowState = FormWindowState.Normal
        Select Case p_NewState
            Case FormWindowState.Maximized
                If m_WindowState = FormWindowState.Normal Then
                    m_FormSizeAndLocation.Location = Me.Location
                    m_FormSizeAndLocation.Size = Me.Size
                End If
                Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
                Me.Size = SystemInformation.WorkingArea.Size
                Me.Location = SystemInformation.WorkingArea.Location
                Exit Select
            Case FormWindowState.Minimized
                Me.WindowState = FormWindowState.Minimized
                Exit Select
            Case FormWindowState.Normal
                Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable
                Me.Location = m_FormSizeAndLocation.Location
                Me.Size = m_FormSizeAndLocation.Size
                Exit Select
        End Select
        m_WindowState = p_NewState
    End Sub
 
    Private Sub ButtonMinimize_Click_1(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonMinimize.Click
        ChangeWindowState(FormWindowState.Minimized)
    End Sub
 
    Private Sub ButtonMaximize_Click_1(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonMaximize.Click
        If m_WindowState = FormWindowState.Maximized Then
            ChangeWindowState(FormWindowState.Normal)
            ButtonMaximize.Text = "Max"
        Else
            ChangeWindowState(FormWindowState.Maximized)
            ButtonMaximize.Text = "Res"
        End If
    End Sub
 
    Private Sub ButtonClose_Click(ByVal sender As Object, ByVal e As EventArgs)
        Close()
    End Sub
 
    Public Sub New()
        InitializeComponent()
        AddHandler panel1.MouseDown, AddressOf panel1_MouseDown
        AddHandler panel1.MouseMove, AddressOf panel1_MouseMove
        AddHandler panel1.MouseUp, AddressOf panel1_MouseUp
        AddHandler panel1.MouseDoubleClick, AddressOf panel1_MouseDoubleClick
 
    End Sub
    Private m_MousePressed As Boolean = False
    Private m_oldX As Integer, m_oldY As Integer
    Sub panel1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
        Dim TS As Point = Me.PointToScreen(e.Location)
        m_oldX = TS.X
        m_oldY = TS.Y
        m_MousePressed = True
    End Sub
    Sub panel1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
        m_MousePressed = False
    End Sub
    Sub panel1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
        If m_MousePressed = True AndAlso m_WindowState <> FormWindowState.Maximized Then
            Dim TS As Point = Me.PointToScreen(e.Location)
            Me.Location = New Point(Me.Location.X + (TS.X - m_oldX), Me.Location.Y + (TS.Y - m_oldY))
            m_oldX = TS.X
            m_oldY = TS.Y
        End If
    End Sub
    Sub panel1_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs)
        ButtonMaximize_Click_1(ButtonMaximize, New EventArgs())
    End Sub
 
    Private Sub ButtonClose_Click_1(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonClose.Click
        Close()
    End Sub
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
    End Sub
End Class
Код не плохо работает.
0
11.09.2016, 09:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2016, 09:07
Привет! Вот еще темы с ответами:

Настроить расположение меню родительской MDI формы - Visual Basic .NET
Проблема такая, есть родительская и дочерняя форма. При разворачивании дочерней формы на полный экран иконка и элементы (закрытие,...

Активация MDI формы при выборе ее названия из списка - Visual Basic .NET
создано несколько mdi форм в главной форме. в каждой mdi форме имеется список с названиями всех mdi форм. как организовать так, чтоб при...

Как убрать иконку слева в MenuStrip MDI формы - Visual Basic .NET
Если в родительской MDI форме максимизирована дочерняя, то слева в MenuStrip появляется такая иконка с тремя квадратиками. У дочерних форм...

Как вызвать процедуру из MDI child из другой формы? - Visual Basic .NET
Привет друзья. Возникла проблема с MDI форма. Вопрос. В MDI форма есть элемент DataGridview то есть заполняется через другой форме. Когда...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.