none
Bordo MdiParent RRS feed

  • Domanda

  • Salve,

    programmo a livello amatoriale in visual studio, ho creato un software nel quale un form MDIParent contiene un child richiamato tramite il comando 

       frm1.MdiParent = Me
        frm1.Show()

    funziona tutto, solo che improvvisamente mi compare, nel bordo del MDIParent, il nome del figlio ovvero -[frm1] il che è molto brutto. Sapete indicarmi come fare per eliminare il problema. Ribadisco che il tutto è comparso all'improvviso a partire da alcune versioni ed infatti nelle vecchie versioni il problema non c'è. Ho anche verificato che le proprietà del form siano identiche tra le varie versioni. 

    Grazie

    Ivano

    sabato 7 gennaio 2017 16:02

Tutte le risposte

  • Non è per caso che c'è un errore che visualizza qualche tipo di exception provocando il problema?

    Inoltre, hai provato a far partire l'eseguibile direttamente dalla cartella Bin per verificare che non sia un effetto dovuto al fatto che sei in Debug su visual studio?

    Sinceramente è qualcosa che non mi è mai accaduta, facci sapere di più grazie.


    Sabrina C. - http://www.dotnetwork.it

    domenica 8 gennaio 2017 18:32
  • Buonasera Ivano,

    il comportamento standard dei child forms in ambito MDI è appunto quello di esporre la gerarchia dei nomi delle finestre, quando la finestra figlio si trova ad essere massimizzata nel padre. In condizioni di diversa dimensione, non viene invece normalmente visualizzata (immagine 1)

    Tale comportamento non viene però osservato (ovviamente) se il titolo del form figlio è assente. Pertanto, se estendessimo il form figlio con una proprietà che mostri o meno il titolo a seconda delle dimensioni della videata, riusciremmo ad ottenere quanto richiesto.

    L'idea è quella di fornire al form figlio una proprietà (che chiameremo "TestoSalvato") in cui immagazzinare il valore della proprietà Text quando il Form viene massimizzato, in modo da poter sovrascrivere Text con una stringa vuota. Quest'ultima proprietà sarà quindi nuovamente valorizzata quando la finestra sarà ridimensionata.

    In codice (supponendo che il form figlio sia Form2):

    Public Class Form2
    
        Dim _testoSalvato As String
    
        Public Property TestoSalvato As String
            Get
                Return _testoSalvato
            End Get
            Set(value As String)
                _testoSalvato = value
            End Set
        End Property
    
        Protected Overrides Sub OnSizeChanged(e As EventArgs)
            MyBase.OnSizeChanged(e)
    
            If Me.WindowState = FormWindowState.Maximized Then
                If (Me.TestoSalvato = "") Then Me.TestoSalvato = Me.Text
                Me.Text = ""
            Else
                Me.Text = Me.TestoSalvato
            End If
    
        End Sub
    End Class

    Testando il programma (con Form1 MDI, che apre al suo interno Form2) si nota che quando Form2 è massimizzato, non mostra alcun testo (e non modifica quindi quello di Form1), mentre quando è ridimensionato espone il proprio titolo:

    Spero queste indicazioni ti siano utili.


    Emiliano Musso // Microsoft MVP Visual Studio and Development Technologies

    • Proposto come risposta Emiliano Musso venerdì 29 settembre 2017 07:03
    martedì 10 gennaio 2017 16:56