vb 2005 Menübeschriftung

Hi

Was wahrscheinlich daran liegt, dass der Aufruf nicht rekursiv ist. ;)

PS: Bitte poste deinen Code in die entsprechenden Code-Tags (code, vbnet, csharp, sql, ...). Das macht die Angelegenheit erheblich lesbarer ;)
 
Einen schönen guten Morgen Niggo,

kannste mal einen kurzen Tipp geben, wie ich dies Rekursiv machen kann. Hab jetzt ne ganze Zeit rumprobiert, krieg das aber irgendwie nich hin

Danke

Czemmel
 
Einen schönen guten Tag zusammen

habe versucht mein Menü (MenuStrip mit MenuToolStripItem) mit einzubauen.
kann mir mal einer helfen.
Hier mein Code indem ich es versucht habe

Code:
    Public Sub SetMenuStripTexts(ByVal itm As ToolStripMenuItem, ByVal trans As System.ComponentModel.ComponentResourceManager)

     If TypeOf itm Is ToolStripItem Then 'Testen, ob auch ein Toolstrip/*Menu*/Item vorliegt
            With DirectCast(itm, ToolStripMenuItem)
                For Each itmRecurse As ToolStripItem In .DropDownItems
                    trans.ApplyResources(itmRecurse, itmRecurse.Name)
                    SetMenuStripTexts(itmRecurse, trans)
                Next
            End With
        End If

    End Sub
    Public Sub formneuzeichnen()

        'Nach allen geöffneten Formen suchen
        For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms

            'anlegen eines Component ResourcenManager
            trans = New System.ComponentModel.ComponentResourceManager(Frm.GetType)

            'Position der Form speichern
            Dim ptlocation As Point = Frm.Location

            'Resourcen übernehmen
            trans.ApplyResources(Frm, Frm.Name.ToString)

            'Position setzen
            Frm.Location = ptlocation

            'Resourcen für alle Controlls übernehmen
            For Each thiscontrol As System.Windows.Forms.Control In Frm.Controls

                trans.ApplyResources(thiscontrol, thiscontrol.Name)

                If thiscontrol.HasChildren Then

                    For Each thisctr As Control In thiscontrol.Controls
                        trans.ApplyResources(thisctr, thisctr.Name)
                    Next thisctr
                End If

            Next thiscontrol

        Next
        For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms

            If Frm.MainMenuStrip IsNot Nothing Then
                'Menübeschriftung
                For Each itm As System.Windows.Forms.ToolStripMenuItem In Frm.MainMenuStrip.Items
                    Call SetMenuStripTexts(itm, trans)
                Next
            Else
                'Throw New Exception(String.Concat("""", Frm.Name, """hat gar kein Menü!"))
            End If
        Next

    End Sub

Wo liegt denn hier der Fehler, dass er mein Menü nicht mitübersetzt ?

Danke für jede Hilfe
Gruß
Czemmel
 
Hi

Hast du schon mal debugged um zu überprüfen, ob er überhaupt Items findet?
Gibt es in den Resourcen auch Text für die entsprechende Sprache?
 
Na sicher gibt es Text in den Resourcen, denn ich habe ja die komplett Form übersetzt.

Meine Button´s und Labels und sogar in meinen Panels enthaltene Labels und Icons werden übersetzt.

Nur nicht meine Menü

Gruß
Czemmel
 
Hallo zusammen, habe es geschaft :-)

Hier mein Code zum Refreshen aller offenen Formen:

Code:
 Public Sub formneuzeichnen()

        'Nach allen geöffneten Formen suchen
        For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms

            'anlegen eines Component ResourcenManager
            trans = New System.ComponentModel.ComponentResourceManager(Frm.GetType)

            'Position der Form speichern
            Dim ptlocation As Point = Frm.Location

            'Resourcen übernehmen
            trans.ApplyResources(Frm, Frm.Name.ToString)

            'Position setzen
            Frm.Location = ptlocation

            'Resourcen für alle Controlls übernehmen
            For Each thiscontrol As System.Windows.Forms.Control In Frm.Controls

                trans.ApplyResources(thiscontrol, thiscontrol.Name)

                If thiscontrol.HasChildren Then

                    For Each thisctr As Control In thiscontrol.Controls
                        trans.ApplyResources(thisctr, thisctr.Name)
                    Next thisctr
                End If

            Next thiscontrol

            'Menübeschriftung
            If Frm.MainMenuStrip IsNot Nothing Then
                For Each itm As System.Windows.Forms.ToolStripMenuItem In Frm.MainMenuStrip.Items
                    With DirectCast(itm, ToolStripMenuItem)
                        trans.ApplyResources(itm, itm.Name)
                        For Each itmRecurse As ToolStripItem In .DropDownItems
                            trans.ApplyResources(itmRecurse, itmRecurse.Name)
                        Next
                    End With
                Next
            Else
                'Throw New Exception(String.Concat("""", Frm.Name, """hat gar kein Menü!"))
            End If
        Next

    End Sub

Vielleicht hilft das auch anderen wieder weiter

Gruß
Czemmel
 
Zurück