<back> 1.2. My typical VB.NET desktop application. MDI environment.
(Login screen, Form menu, Accessibility, Windows management).
This is typical main MDI-application form.
In line 6-15 I define reference of internal forms and in below I manipulate windows (except string 149-156), where I manipulate fonts.
1: Imports System.Windows.Forms
2:
3: Public Class MainMDI
4:
5:
6: Public AD As ActionDetail
7: Public ED As EmailsDownloader
8: Public EC As EmailCenter
9: Public ET As EmailDetail
10: Public NE As NewEmailDialog
11: Public PN As PeopleDetailNormal
12: Public PD As PeopleDirectory
13: Public PS As PersonSelector
14: Public QM As QuickMenu
15: Public EP As EmailPrint
16: Public SelectioFontSize As Integer
17:
18: Public PeopleDetailNormal_IDPerson As Long
19: Public TempAppDirectory As String
20: Public WithEvents Timer1 As New Timer
21: Public LoginForm1 As New Version
22:
23:
24: Private Sub MainMDI_Load(sender As Object, e As EventArgs) Handles Me.Load
25: FontSizeToolStripComboBox.SelectedIndex = 4
26: Text &= " (" & My.Application.Info.Version.ToString & ")"
27: Timer1.Interval = 100
28: Timer1.Start()
29: EmailCenterToolStripButton1_Click(Nothing, Nothing)
30: TempAppDirectory = Me.GetTempDirectory
31: End Sub
32:
33: Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
34: Timer1.Stop()
35: LoginForm1.WindowState = FormWindowState.Normal
36: LoginForm1.TopMost = True
37: LoginForm1.StartPosition = FormStartPosition.CenterScreen
38: LoginForm1.ShowDialog()
39: End Sub
40:
41: Public Sub ShowEmailDownloaderToolStripButton1_Click(sender As Object, e As EventArgs) Handles WindowsShowAllToolStripMenuItem.Click
42: If Not (Me.MdiChildren.Any(Function(X) X Is ED)) Then
43: ED = ED.OpenAsMDI
44: Else
45: ED.WindowState = FormWindowState.Normal
46: ED.BringToFront()
47: End If
48: End Sub
49:
50: Public Sub QuickMenuToolStripButton1_Click(sender As Object, e As EventArgs) Handles QuickMenuToolStripMenuItem.Click
51: If Not (Me.MdiChildren.Any(Function(X) X Is QM)) Then
52: QM = QM.OpenAsMDI
53: Else
54: QM.WindowState = FormWindowState.Normal
55: QM.BringToFront()
56: End If
57: End Sub
58:
59: Public Sub EmailCenterToolStripButton1_Click(sender As Object, e As EventArgs) Handles EmailCenterToolStripMenuItem.Click
60: If Not (Me.MdiChildren.Any(Function(X) X Is EC)) Then
61: EC = EC.OpenAsMDI
62: Else
63: EC.WindowState = FormWindowState.Normal
64: EC.BringToFront()
65: End If
66: End Sub
67:
68: Public Sub EmailPrintToolStripButton1_Click(sender As Object, e As EventArgs) Handles EmailPrintToolStripMenuItem.Click
69: If Not (Me.MdiChildren.Any(Function(X) X Is EP)) Then
70: EP = EP.OpenAsMDI
71: Else
72: EP.WindowState = FormWindowState.Normal
73: EP.BringToFront()
74: End If
75: End Sub
76:
77: Public Sub NewEmailDialogToolStripButton1_Click(sender As Object, e As EventArgs) Handles NewEmailToolStripMenuItem.Click
78: If Not (Me.MdiChildren.Any(Function(X) X Is NE)) Then
79: NE = NE.OpenAsMDI
80: Else
81: NE.WindowState = FormWindowState.Normal
82: NE.BringToFront()
83: End If
84: End Sub
85:
86: Public Sub PersonSelectorToolStripButton1_Click(sender As Object, e As EventArgs) Handles PersonSelectorToolStripMenuItem.Click
87: If Not (Me.MdiChildren.Any(Function(X) X Is PS)) Then
88: PS = PS.OpenAsMDI
89: Else
90: PS.WindowState = FormWindowState.Normal
91: PS.BringToFront()
92: End If
93: End Sub
94:
95: Public Sub PeopleDirectoryToolStripButton1_Click(sender As Object, e As EventArgs) Handles PersonSelectorToolStripMenuItem.Click
96: If Not (Me.MdiChildren.Any(Function(X) X Is PD)) Then
97: PD = PD.OpenAsMDI
98: Else
99: PD.WindowState = FormWindowState.Normal
100: PD.BringToFront()
101: End If
102: End Sub
103:
104: Public Sub ActionDetailToolStripButton1_Click(sender As Object, e As EventArgs) Handles ActionDetailToolStripMenuItem.Click
105: If Not (Me.MdiChildren.Any(Function(X) X Is AD)) Then
106: AD = AD.OpenAsMDI
107: Else
108: AD.WindowState = FormWindowState.Normal
109: AD.BringToFront()
110: End If
111: End Sub
112:
113: Public Sub EmailDetailToolStripButton1_Click(sender As Object, e As EventArgs) Handles EmailDetailToolStripMenuItem.Click
114: If Not (Me.MdiChildren.Any(Function(X) X Is ET)) Then
115: ET = ET.OpenAsMDI
116: Else
117: ET.WindowState = FormWindowState.Normal
118: ET.BringToFront()
119: End If
120: End Sub
121:
122: Public Sub PeopleDetailNormalToolStripButton1_Click(sender As Object, e As EventArgs) Handles PeopleDetailToolStripMenuItem.Click
123: If Not (Me.MdiChildren.Any(Function(X) X Is PN)) Then
124: PN = PN.OpenAsMDI(PeopleDetailNormal_IDPerson)
125: Else
126: PN.WindowState = FormWindowState.Normal
127: PN.BringToFront()
128: End If
129: End Sub
130:
131: Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles WindowsCloseAllToolStripMenuItem.Click
132: For Each ChildForm As Form In Me.MdiChildren
133: ChildForm.WindowState = FormWindowState.Minimized
134: Next
135: End Sub
136:
137: Private Sub WindowCascadeToolStripButton_Click(sender As Object, e As EventArgs) Handles WindowCascadeToolStripMenuItem.Click
138: Me.LayoutMdi(MdiLayout.Cascade)
139: End Sub
140:
141: Private Sub WindowsVerticalToolStripButton_Click(sender As Object, e As EventArgs) Handles WindowsVerticalToolStripMenuItem.Click
142: Me.LayoutMdi(MdiLayout.TileVertical)
143: End Sub
144:
145: Private Sub WindowsHorizontalToolStripButton_Click(sender As Object, e As EventArgs) Handles WindowsHorizontalToolStripMenuItem.Click
146: Me.LayoutMdi(MdiLayout.TileHorizontal)
147: End Sub
148:
149: Public FontSize As String
150: Private Sub FontSizeToolStripComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles FontSizeToolStripComboBox.SelectedIndexChanged
151: FontSize = FontSizeToolStripComboBox.Text
152: Me.SetFontSize(FontSize)
153: For Each X In Me.MdiChildren.ToList
154: X.SetFontSize(FontSize)
155: Next
156: End Sub
157:
158: Public Sub WindowsShowAllToolStripButton_Click(sender As Object, e As EventArgs) Handles WindowsShowAllToolStripMenuItem.Click
159: ShowEmailDownloaderToolStripButton1_Click(Nothing, Nothing)
160: QuickMenuToolStripButton1_Click(Nothing, Nothing)
161: EmailCenterToolStripButton1_Click(Nothing, Nothing)
162: EmailPrintToolStripButton1_Click(Nothing, Nothing)
163: NewEmailDialogToolStripButton1_Click(Nothing, Nothing)
164: PersonSelectorToolStripButton1_Click(Nothing, Nothing)
165: PeopleDirectoryToolStripButton1_Click(Nothing, Nothing)
166: ActionDetailToolStripButton1_Click(Nothing, Nothing)
167: EmailDetailToolStripButton1_Click(Nothing, Nothing)
168: PeopleDetailNormalToolStripButton1_Click(Nothing, Nothing)
169: End Sub
170:
171: End Class
For accessing to font I use extension function
11: <Extension()>
12: Public Sub SetFontSize(CurForm As Form, FontSize As String)
13: Dim FormControlList = (From Z In CurForm.Controls Select Z).ToList
14: Select Case FontSize
15: Case "8" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_8)
16: Case "8,5" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_8_5)
17: Case "9" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_9)
18: Case "9,5" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_9_5)
19: Case "10" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_10)
20: Case "10,5" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_10_5)
21: Case "11" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_11)
22: Case "11,5" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_11_5)
23: Case "12" : FormControlList.ForEach(Sub(X) X.Font = Cuprum_Regular_12)
24: End Select
25: End Sub
And form control I also encapsulating in extension.
1: Imports System.Runtime.CompilerServices
2:
3: Module MDIExtensions
4:
5: <Extension()>
6: Public Function OpenAsMDI(X As EmailsDownloader) As EmailsDownloader
7: OpenAsMDI = New EmailsDownloader
8: OpenAsMDI.MdiParent = MainMDI_Instance
9: OpenAsMDI.Show()
10: OpenAsMDI.BringToFront()
11: End Function
12:
13: <Extension()>
14: Public Function OpenAsMDI(X As ActionDetail) As ActionDetail
15: OpenAsMDI = New ActionDetail
16: OpenAsMDI.MdiParent = MainMDI_Instance
17: OpenAsMDI.Show()
18: OpenAsMDI.BringToFront()
19: End Function
20:
21: <Extension()>
22: Public Function OpenAsMDI(X As EmailCenter) As EmailCenter
23: OpenAsMDI = New EmailCenter
24: OpenAsMDI.MdiParent = MainMDI_Instance
25: OpenAsMDI.Show()
26: OpenAsMDI.BringToFront()
27: End Function
28:
29: <Extension()>
30: Public Function OpenAsMDI(X As EmailDetail) As EmailDetail
31: OpenAsMDI = New EmailDetail
32: OpenAsMDI.MdiParent = MainMDI_Instance
33: OpenAsMDI.Show()
34: OpenAsMDI.BringToFront()
35: End Function
36:
37: <Extension()>
38: Public Function OpenAsMDI(X As NewEmailDialog) As NewEmailDialog
39: OpenAsMDI = New NewEmailDialog
40: OpenAsMDI.MdiParent = MainMDI_Instance
41: OpenAsMDI.Show()
42: OpenAsMDI.BringToFront()
43: End Function
44:
45:
46: <Extension()>
47: Public Function OpenAsMDI(X As PeopleDetailNormal, PeopleDetailNormal_IDPerson As Long) As PeopleDetailNormal
48: OpenAsMDI = New PeopleDetailNormal
49: OpenAsMDI.IDPerson = PeopleDetailNormal_IDPerson
50: OpenAsMDI.MdiParent = MainMDI_Instance
51: OpenAsMDI.Show()
52: OpenAsMDI.BringToFront()
53: End Function
54:
55: <Extension()>
56: Public Function OpenAsMDI(X As PeopleDirectory) As PeopleDirectory
57: OpenAsMDI = New PeopleDirectory
58: OpenAsMDI.MdiParent = MainMDI_Instance
59: OpenAsMDI.Show()
60: OpenAsMDI.BringToFront()
61: End Function
62:
63: <Extension()>
64: Public Function OpenAsMDI(X As PersonSelector) As PersonSelector
65: OpenAsMDI = New PersonSelector
66: OpenAsMDI.MdiParent = MainMDI_Instance
67: OpenAsMDI.Show()
68: OpenAsMDI.BringToFront()
69: End Function
70:
71: <Extension()>
72: Public Function OpenAsMDI(X As QuickMenu) As QuickMenu
73: OpenAsMDI = New QuickMenu
74: OpenAsMDI.MdiParent = MainMDI_Instance
75: OpenAsMDI.Show()
76: OpenAsMDI.BringToFront()
77: End Function
78:
79:
80: <Extension()>
81: Public Function OpenAsMDI(X As EmailPrint) As EmailPrint
82: OpenAsMDI = New EmailPrint
83: OpenAsMDI.MdiParent = MainMDI_Instance
84: OpenAsMDI.Show()
85: OpenAsMDI.BringToFront()
86: End Function
87:
88: <Extension()>
89: Public Function OpenAsMDI(X As EmailHeaders, Headers As MimeKit.HeaderList) As EmailHeaders
90: OpenAsMDI = New EmailHeaders
91: OpenAsMDI.Headers = Headers
92: OpenAsMDI.MdiParent = MainMDI_Instance
93: OpenAsMDI.Show()
94: OpenAsMDI.BringToFront()
95: End Function
96:
97: End Module
Also this code request login screen. In this case this is simple dummy form with dummy login/password.
Also I use the same way of creating new windows is any place of my application, for example.
188: Private Sub GetHeadersLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles GetHeadersLinkLabel.LinkClicked
189: If Not (MainMDI_Instance.MdiChildren.Any(Function(X) X Is EH)) Then
190: EH = EH.OpenAsMDI(MailHeaders)
191: Else
192: EH.WindowState = FormWindowState.Normal
193: EH.BringToFront()
194: End If
195: End Sub
In this case MDI-form has call with parameters.
1: Public Class EmailHeaders
2: Public Property Headers As MimeKit.HeaderList
3:
4: Private Sub EmailHeaders_Load(sender As Object, e As EventArgs) Handles Me.Load
5: Dim X As New ArrayList
6: For I As Integer = 0 To Headers.Count - 1
7: X.Add(New With {.Name = Headers(I).Field, .Value = Headers(I).Value})
8: Next
9: DataGridView1.DataSource = X
10: End Sub
11: End Class
Comments (
)
<00>
<01>
<02>
<03>
<04>
<05>
<06>
<07>
<08>
<09>
<10>
<11>
<12>
<13>
<14>
<15>
<16>
<17>
<18>
<19>
<20>
<21>
<22>
<23>
Link to this page:
//www.vb-net.com/Samantha/MDI.htm
<SITEMAP> <MVC> <ASP> <NET> <DATA> <KIOSK> <FLEX> <SQL> <NOTES> <LINUX> <MONO> <FREEWARE> <DOCS> <ENG> <CHAT ME> <ABOUT ME> < THANKS ME> |