2016-07-15 23 views
1

Ich habe einen Ausblick Addin erstellt und hinzugefügt richtigen eine benutzerdefinierte TaskPane esautomatisch anpassen die Outlook-Taskpane automatisch mit verschiedenen Bildschirmen

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      taskpane = this.CustomTaskPanes.Add(new UCMaster(), "Summit Service Management"); 
      UserControl ucmaster = taskpane.Control; 
      eh = new ElementHost { Child = new WPFUCMaster(new WPFUCLogin()) }; 
      eh.Dock = DockStyle.Fill; 
      eh.AutoSize = true; 
      ucmaster.Controls.Add(eh); 
      taskpane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; 
      taskpane.DockPositionRestrict = Office.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange; 
      taskpane.Width = 460; 
      taskPaneWidth = taskpane.Width; 
      taskPaneHeight = taskpane.Height; 
      ucmaster.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right);   
      ucmaster.AutoSizeMode = AutoSizeMode.GrowAndShrink; 
      ucmaster.AutoSize = true; 
      int h = ucmaster.Height; 
      int w = ucmaster.Width; 
      initialAddinInstance = this; 
      ucmaster.BringToFront(); 
     } 

hier im hartzucodieren die TaskPane Breite nach meinen Bildschirmabmessungen und Auflösung es sucht.

Aber in verschiedenen Bildschirmen im Beobachten wie der Aufgabenbereich wird komprimiert oder auf andere Weise.

meine frage ist wie kann ich dyanmical die taskpanebreite entsprechend der aktuellen system bildschirmauflösung und abmessungen ändern?

Antwort

1

Für Container-Steuerelemente sollte "AutoScaleMode" Inherit sein und für Leaf-Steuerelemente sollte es Font sein. Versuchen Sie Folgendes: ucmaster.AutoScaleMode = AutoScaleMode.Inherit; und Machen Sie Ihr Kind Benutzersteuerung zu: ucChild.AutoScaleMode = AutoScaleMode.Font;