2009-05-21 8 views
2

Je suis l'hôte d'un graphique WPF dans un ActionsPane Excel 2003. Le graphique est défini pour s'étirer à la fois horizontalement et verticalement, cependant, bien que ElementHost et le graphique remplissent le panneau ActionsPane horizontalement, je n'ai pas trouvé un moyen d'activer le remplissage vertical de ElementHost. La seule propriété qui semble avoir un effet sur la disposition de ElementHost est les propriétés Height et Size. Anchor, Dock, AutoSize ne semblent pas affecter la mise en page sur l'objet ActionsPane ou l'objet ElementHost.AutoSize ElementHost dans Excel 2003 ActionsPane

Ai-je raté quelque chose?

salutations,

Danny

// A snippet from ThisWorkbook.cs 
public partial class ThisWorkbook 
{ 
    private void ThisWorkbook_Startup(object sender, System.EventArgs e) 
    { 

     var ap = Globals.ThisWorkbook.ActionsPane; 
     ap.Clear(); 
     ap.Visible = true; 
     var plotControl1 = new Swordfish.WPF.Charts.TestPage(); 
     var elementHost1 = new System.Windows.Forms.Integration.ElementHost(); 
     elementHost1.AutoSize = true; // Doesn't seem to have an effect. 
     elementHost1.Child = plotControl1; 

     ap.Controls.Add(elementHost1); 

    } 

Répondre

3

créer un formulaire WPF personnalisé appelé mon ActionPane et hébergé dans un ElementHost. Voici comment je l'ai fait l'ElementHost lui-même:

private void ThisDocument_Startup(object sender, System.EventArgs e) 
    { 
     ActionPane actionPaneControl = new ActionPane(); 
     this.ActionsPane.Resize += new EventHandler(ActionsPane_Resize); 
     this.ActionsPane.Controls.Add(new ElementHost { Child = actionPaneControl, AutoSize = true }); 
    } 

Fondamentalement, j'abonnez-vous à la ActionsPane Redimensionner événement et la taille de l'objet ElementHost basé sur de cela. Cela donne l'avantage latéral supplémentaire de la WPF contorl (à la fois vert et stretch horiz) le redimensionnement ainsi que l'application Office fenêtre

void ActionsPane_Resize(object sender, EventArgs e) 
    { 
     ((this.ActionsPane.Controls[0] as ElementHost).Child as ActionPane).Height = this.ActionsPane.Height; 
    } 
+0

a marché pour moi, mais je me demande si d'autres COLMATAGES ajoutent leurs contrôles au ActionsPane trop ? – surfen

+0

@surfen Pas sûr à 100%, je devrais vérifier –

Questions connexes