Form nach minimieren nicht mehr zu öffnen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.

    1. Was heißt konkret »Irgendwie will das bei mir nicht.«?
    2. Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden. Stichwort MsgBox
    3. BasisForm.Oeffnen(1)?!? Im gezeigten Code ist BasisForm der Name einer Klasse. Methoden kann man aber nur auf Klasseninstanzen anwenden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Westerwälder schrieb:

    Dann müsste ich es ja doch 50 mal ergänzen.
    Genau dafür gibt es die BaseClass.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Irgendwie will das nicht bei mir, heisst, die Form wird nach Minimierung nicht in der Taskleiste angezeigt.
    MsgBox verwende ich immer, wenn diese nach Fertigstellung des Programmteils wieder rausgenommen werden kann. Sonst MessageBox.
    BasisForm ist eine Form, hier habe ich mich an das Bsp. von Rod (Form1) gehalten.


    Edit:
    Es erscheint bei der Minimierung nichts in der Taskleiste, aber ich kann die Form wieder maximieren, indem ich sie eigentlich öffnen möchte ????
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    Zur Übersicht stelle ich nochmals alles zusammen:

    Die Klasse:

    VB.NET-Quellcode

    1. Public Class MBC_Formbase
    2. Inherits System.Windows.Forms.Form
    3. Protected Overrides Sub OnSizeChanged(e As EventArgs)
    4. MyBase.OnSizeChanged(e)
    5. MsgBox("Huhu") 'Änderung zur Kontrolle
    6. Me.ShowInTaskbar = (Me.WindowState = FormWindowState.Minimized)
    7. End Sub
    8. End Class

    Dieses Huhu sehe ich nicht.

    Das Form:

    VB.NET-Quellcode

    1. Public Class BasisForm : Inherits MBC_Formbase
    2. Private WithEvents Frm As New Form
    3. Public Sub New()
    4. Me.ShowInTaskbar = False
    5. End Sub
    6. Public Sub Oeffnen(ByVal Nummer As Integer)
    7. If Nummer = 0 Then Exit Sub
    8. If Nummer = 1 Then Frm = Internetbrowser
    9. If Nummer = 2 Then Frm = KombiKalender
    10. Try
    11. If Not Frm.Visible Then
    12. Frm.Show(Me)
    13. End If
    14. If Frm.WindowState = FormWindowState.Minimized Then
    15. Frm.WindowState = FormWindowState.Normal
    16. End If
    17. Catch ex As Exception
    18. End Try
    19. End Sub
    20. End Class


    Das Öffnen:

    VB.NET-Quellcode

    1. Private Sub TS_Internet_Click(sender As Object, e As EventArgs) Handles TS_Internet.Click
    2. If Halt Then Exit Sub
    3. 'If Internetbrowser.Visible Then Exit Sub
    4. 'Dim NeueForm As Form = Internetbrowser
    5. 'NeueForm.Opacity = 0
    6. 'NeueForm.Show()
    7. BasisForm.Oeffnen(1)
    8. End Sub

    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    Westerwälder schrieb:

    Irgendwie will das nicht bei mir, heisst, die Form wird nach Minimierung nicht in der Taskleiste angezeigt.
    Ich habe Dir bereits in Post #16 ein Test-Projekt angehängt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Rod, danke dafür. Dein Beispiel funktioniert tadellos.
    Sobald ich es bei mir ins Projekt übernehme tut sich in der Taskleiste nichts.
    Verstehe das nicht mehr.
    Kann es am Framework 4.8 liegen?
    Form:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class BaseForm
    4. Private WithEvents frm1 As Form1
    5. Private Sub Button_Frm1_Click(sender As Object, e As EventArgs) Handles Button_Frm1.Click
    6. If frm1 Is Nothing OrElse frm1.IsDisposed Then
    7. frm1 = New Form1
    8. End If
    9. If Not frm1.Visible Then
    10. frm1.Show(Me)
    11. End If
    12. If frm1.WindowState = FormWindowState.Minimized Then
    13. frm1.WindowState = FormWindowState.Normal
    14. End If
    15. End Sub
    16. End Class



    Klasse:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class MBC_FormBase
    4. Inherits System.Windows.Forms.Form
    5. Public Sub New()
    6. Me.ShowInTaskbar = False
    7. End Sub
    8. Protected Overrides Sub OnSizeChanged(e As EventArgs)
    9. MyBase.OnSizeChanged(e)
    10. Me.ShowInTaskbar = (Me.WindowState = FormWindowState.Minimized)
    11. End Sub
    12. End Class

    Gruß Markus
    Und wo steht, dass BaseForm von MBC_FormBase erbt? Bitte auch den FormX.Designer.VB-Inhalt posten! Oder muss Form1 von MBC_FormBase erben? Oder von BaseForm? Es fehlen auf jeden Fall Infos zum Bewerten des Falls.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Den Gedanken hatte ich eben auch schon hier reingeschrieben, dann aber wieder gelöscht, da ich in Rod's Beipiel auch nichts finde.
    Vielleicht sehe ich auch nicht mehr gut.

    Dies in der einzigste
    Public Class MBC_FormBase
    Inherits System.Windows.Forms.Form
    im gesamten Projekt.
    Gruß Markus

    Westerwälder schrieb:

    Private WithEvents frm1 As Form1
    Was soll die Form1-Instanz in der Base-Class :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Westerwälder schrieb:

    Hier öffne ich die Form1 zu testen.
    Solch gehört in eine Button_Click der MainForm, nicht aber der BaseClass.
    Wahrscheinlich hast Du die Bedeutung einer Basisklasse für eigene Forms noch nicht ganz durchdrungen. :/
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Post #26, Spoiler1:
    BaseForm ist eine Form, hier auch Private WithEvents frm1 As Form1 und der Button zum Öffnen.

    Spoiler2:
    MBC_FormBase ist die Klasse.

    Dein Projekt Mein Projekt
    Form1 ist BaseForm
    FormBase ist MBC_FormBase
    Form2 ist Form1
    Form3 gibt es nicht
    Form4 gibt es nicht
    Gruß Markus

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Westerwälder“ ()

    Abschlusskomentar:
    Denke wenn Microft das nicht in nächster Zeit nicht hin bekommt (auch DPI)
    sollten sie Ihre Prioriträen auf DOS spezifikazieren.

    Edit:
    Wenn ich dies in den betroffenen Formen (Designer)
    ' Inherits System.Windows.Forms.Form

    Inherits MBC_System.CFormBase
    ändere, funktioniert es.


    Gruß Markus

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Westerwälder“ ()