Form.Icon bei deaktivierter ControlBox ???

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Storch.

    Form.Icon bei deaktivierter ControlBox ???

    Hallo Leutz,

    in einigen Formularen, die per ShowDialog geöffnet werden, habe ich die Controlbox deaktiviert, da diese nur über einen OK-Button (DialogResult) geschlossen werden sollen.
    Leider wird bei deaktivierter Controlbox auch das FormularIcon ausgeblendet. Ich habe das Netz schon hoch -u. runter bemüht. Scheinbar gibt es keine Möglichkeit, das Icon trotzdem anzuzeigen.

    Aber vllt. hat hier jemand eine Idee, ob und wie das doch gehen könnte???????????
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    Habe jetzt im Objektkatalog geschaut, es gibt

    VB.NET-Quellcode

    1. System.Windows.Forms.VisualStyles.VisualStyleElement.Window.CloseButton

    Klasse, und da drunter gibt es

    VB.NET-Quellcode

    1. Disabled

    Property, die dir das Schließen per Kreuz verhindert.
    Wobei ich persönlich diese ControlBox gar nicht ausblenden würde. Soll doch das rote X da oben rechts erhalten bleiben. Dann wird der Dialog eben so modifiziert, dass auch bei einem Klick auf das "X" das DialogResult "OK" zurückgegeben wird - so wie es eigentlich der Windows Design-Standard ist.

    Beispiel: Erzeuge eine MessageBox, die nur einen OK-Button enthält. Sie wird ebenfalls ein "X" haben - und wenn man draufklickt, schließt die MessageBox und der Rückgabewert ist - wie sollte es anders sein - DialogResult.OK, und das obwohl man den OK-Button vielleicht noch nicht mal eines Blickes gewürdigt hatte. ;)
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Joo, Eure Antworten lassen darauf schließen, dass es mit Bordmitteln tatsächlich nicht machbar ist

    @rod
    Danke, aber das ist mir ein bischen Too Much.

    @sonne
    eine Schließen-Schaltfläche anzuzeigen aber ihre Funktion zu unterdrücken, finde ich sehr verwirrend für den User. Stell Dir vor, Du klickst in einem Programm auf das weiße X im roten Kasten und es passiert nix ;(

    @Arby
    Du schreibst annähernd das, was ich mir auch schon als Lösung überlegt habe:

    ControlBox auf True; Min und Max auf False. Damit sieht man das Icon , die Beschriftung und den Schließen-Button

    Ein Button, dessen DialogResult-Eigenschaft belegt ist, veranlasst offensichtlich das Schließen des Forms. Der SchließenButton des Forms macht das ebenfalls.
    Daher eine Messagebox im Closing-Ereignis und dort, entsprechend dem Ergebnis der Messagebox den DialogResuilt des Forms festlegen.

    VB.NET-Quellcode

    1. Private Sub frm_options_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    2. If MessageBox.Show("Schließen?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    3. Me.DialogResult = Windows.Forms.DialogResult.OK
    4. Else
    5. Me.DialogResult = Windows.Forms.DialogResult.Cancel
    6. End If
    7. End Sub


    Alternativ könnte man auch die Messagebox weglassen und den DialogResult gleich auf Dialog.OK zwingen.

    Edith: Über eine Messagebox könnte man sich, bei Platzmangel oder wenn es zu einem schlechten Layout führen würde, sogar die Result-Buttons sparen. Zu-Xen und die Messagebox mit drei Schaltflächen, Ok, Abbrechen, Wiederholen aufrufen, da kann man dann alles Bestätigen, Abbrechen oder im Form bleiben um Änderungen zu tätigen. Aber sicher auch alles Geschmackssache.
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Storch“ ()

    soll denn der visuelle style der form erhalten bleiben und nur die boxes ausgeblendet werden?
    wenn ja, hast du nur die chance zu tricksen.
    kannst nen screenshot von ner form ohne controlbox machen. den screenshot bearbeitest du bspl. in paint und fügst dein icon dazu. die image-datei importierst du in eine picturebox-steuerelement. legst über das pic-box alle andren steuerelemente die brauchst (bringtofront) und setzt formborderstyle=none.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „affrop“ ()

    @affrop

    Danke für den Tipp. Aber diese Maßnahme ist mir auch Too Much.

    Ich hab es jetzt halt so hingebastelt, wie bereits beschrieben.

    Nochmal Danke an Alle.
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!