Здравствуйте!
Я новичок, в програмировании (около недели). Использую VB 2005 EXPRESS
Прошу овъяснить и сильно не наезжать.
На форме:
StatusStrip, ToolStrip, MenuStrip, NotifyIcon
Делаю так:
Module Module1
Public Child1 As New form1
Public Child2 As New form2
End Module
Imports System.Windows.Forms
Public Class frmMDI
Private Sub MDI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Child1.MdiParent = Me
Child1.Show()
Child2.MdiParent = Me
Child2.Show()
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
End Class
Дочерняя1:
Public Class form1
Inherits System.Windows.Forms.Form
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Location = New Drawing.Point(0, 0)
Me.WindowState = FormWindowState.Maximized
Me.ControlBox = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Child2.Focus()
End Sub
End Class
Дочерняя2:
Public Class form1
Inherits System.Windows.Forms.Form
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Location = New Drawing.Point(0, 0)
Me.WindowState = FormWindowState.Maximized
Me.ControlBox = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Child2.Focus()
End Sub
End Class
Вопрос:
Почему, при первой загрузке, формы прячуться под МенюСтрип,
а после нажатия кнопки на дочках, перересовываються на новое место.
Сразу скажу, что я менял значения Me.Location = New Drawing.Point(0, 0),
а также ексепементировал с МЕ.ТОР =,
но никаких изменений не было.
Изменения происходят при смене фокуса или изменении размеров Родителя.
так это ж дочерние формы, вот они и перерисовываются под меню
Ну хорошо, если ты считаешь, что формы отображаются "неправильно", то объсно как по твоему представлению они должны отобразиться "правильно"?
Для более верной помощи - опиши, что ты конкретно хочешь от этих форм, подробно и внятно
У меня 5 дочерних форм, на них много всяких кнопок и текстбоксов, а также, в location(0,0) стоит пикчербокс.
В своем вопросе я описал только 2 формы, так как остальные примерно одинаковые.
Так вот, при первой загрузке программы, все формы прячутся поб менюстрип,а при изменении размеров MDI формы или смене фокуса дочерней формы перерисовываються на новое место location(-4,0) или location (-4,-4)
Может я неправильно обьясняю? Но если Вы напишете выше приведенный код, то сразу все поймете.
Обнаружил я это по pictureBox.
При стартапе менюстрип перекрывает картинку, а при смене фокуса или изменении MDI размеров картинка отображается корректно.
Public Class Form2
Inherits System.Windows.Forms.Form
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Location = New Drawing.Point(0, 0)
Me.WindowState = FormWindowState.Maximized
Me.ControlBox = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Child2.Focus()
End Sub
Private Sub Form2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
'рисуем линию, чтобы проверить, где находится начало координат
e.Graphics.DrawLine(Pens.Black, 0, 0, 100, 100)
End Sub
End Class
Public Class Form3
Inherits System.Windows.Forms.Form
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Location = New Drawing.Point(0, 0)
Me.WindowState = FormWindowState.Maximized
Me.ControlBox = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Child1.Focus()
End Sub
'рисую на пикчербоксе, который имеет location 0,0
'тоже чтобыпровеить начало координат, все отображаетс успещно
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawLine(Pens.Black, 0, 0, 100, 100)
End Sub
End Class