![]() |
Tipp 0105
|
Schließverhalten von Formularen ändern
|
 |
|
Autor/Einsender: Datum: |
|
Klaus Raudszus 11.02.2006 |
|
Entwicklungsumgebung: |
|
VB.Net 2003 |
Framework: |
|
1.1 |
|
|
Im Standardverhalten beim Schließen der Formulare in einer Applikation ist es so, dass man die Form, die eine andere Form instanziert nicht schließen kann,
ohne die ganze Anwendung zu beenden. So wird im Normalfall mit mehreren
Formen die Anwendung immer geschlossen, wenn die Hauptform geschlossen wird.
|
Dieser Tipp demonstriert, wie mit der Klasse ApplicationContext dieses Verhalten verändert werden kann.
Die ApplicationContext-Klasse gibt die Kontextinformationen zu einem Anwendungsthread an. In der Standardeinstellung überwacht
ApplicationContext das Closed-Ereignis für das Hauptform der Anwendung und beendet dann die Meldungsschleife des Threads.
Im Tipp wird in der vererbten Klasse die instanzierende Klasse geschlossen und die neue Form angezeigt.
|
|
|
Option Strict On
Public Class clsAppContext
Inherits ApplicationContext
Protected Friend WithEvents m_frmMain As frmMain
Protected Friend WithEvents m_frmSub As frmSuB
Protected Friend WithEvents m_frmSubSub As frmSubSub
Public Sub New(ByVal enumForms As AllForms)
InstanzForm(Nothing, enumForms)
End Sub
Private Sub InstanzForm(ByVal sender As Form, _
ByVal formName As AllForms)
Dim activeForm As Form
Select Case formName
Case AllForms.frmMain
m_frmMain = New frmMain
AddHandler m_frmMain.InstanceForm, AddressOf InstanzForm
activeForm = m_frmMain
Case AllForms.frmSuB
m_frmSub = New frmSuB
AddHandler m_frmSub.InstanceForm, AddressOf InstanzForm
activeForm = m_frmSub
Case AllForms.frmSubSub
m_frmSubSub = New frmSubSub
AddHandler m_frmSubSub.InstanceForm, AddressOf InstanzForm
activeForm = m_frmSubSub
End Select
activeForm.Show()
Me.MainForm = activeForm
If Not (sender Is Nothing) Then sender.Close()
End Sub
Protected Overrides Sub OnMainFormClosed(ByVal sender _
As Object, ByVal e As EventArgs)
Me.ExitThread()
End Sub
End Class
|
|
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (15,6 kB)
|
Downloads bisher: [ 445 ]
|
|
|