2009-03-12 13 views
2

ToolStripManager est irrémédiablement brisé. LoadSettings ne fait pas une chose ... et je suis évidemment pas le seul à avoir ce problème:ToolStripManager ne fonctionne pas

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/656f5332-610d-42c3-ae2d-0ffb84a74b34/

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=128042

Alors ... Quelqu'un at-il une solution de contournement? Celui posté dans ce fil a juste déplacé toutes les barres d'outils au bas de la fenêtre.

Répondre

0

Voici ma solution:

Declare cette structure pour stocker les paramètres d'une barre d'outils:

[Serializable] 
public struct ToolStripSettings 
{ 
    public bool Visible; 
    public Point Location; 
} 

Code pour sauver

// save toolbar settings 
List<ToolStripSettings> toolSettings = new List<ToolStripSettings>(); 
// mToolbars is initialized in the constructor to contain all of your toolbar members 
// you could also probably populate it with reflection 
foreach (ToolStrip ts in mToolbars) 
{ 
    ToolStripSettings tss = new ToolStripSettings(); 
    tss.Visible = ts.Visible; 
    tss.Location = ts.Location; 
    toolSettings.Add(tss); 
} 
// serialize the toolSettings list wherever you keep the 
// rest of your user-specific settings 

Code pour restaurer

// Load toolstrip settings, if any 
if (/*deserialized storage location*/ != null) 
{ 
    for (int i = 0; i < mToolbars.Length; i++) 
    { 
     mToolbars[i].Visible = /*deserialized storage location*/[i].Visible; 
     mToolbars[i].Location = /*deserialized storage location*/[i].Location; 
    } 
} 
+0

Restaure l'emplacement tout ce qui est nécessaire si le ToolStrip a été déplacé vers un ToolStripPanel différent? Autrement dit, vous n'avez pas à stocker explicitement le conteneur parent? –

+0

Vous avez raison. Vous devez également stocker le nom du parent. Je mettrai à jour mon message une fois que je l'aurai corrigé. – Nick