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
 
Weitere Links zum Thema
Programm mit Abfrage beenden
Schließverhalten von Formularen

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (15,6 kB) Downloads bisher: [ 450 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 21. Januar 2012