使用不同的屏幕自动调整Outlook Custom Taskpane的自动调整大小

时间:2016-07-15 12:43:02

标签: c# vsto outlook-addin autosize customtaskpane

我创建了一个outlook addin并为其添加了一个自定义任务窗口

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();
        }

这里我根据我的屏幕尺寸和分辨率硬编码任务窗格宽度,看起来很合适。

但是,在不同的屏幕中,我可以像任务窗格一样进行压缩或以任何其他方式进行压缩。

我的问题是如何根据当前系统屏幕分辨率和尺寸动态更改任务窗格宽度?

1 个答案:

答案 0 :(得分:1)

对于容器控件" AutoScaleMode"应该是Inherit,对于Leaf Controls,它应该是Font。 试试这个: ucmaster.AutoScaleMode = AutoScaleMode.Inherit; 和 让您的孩子用户控制: ucChild.AutoScaleMode = AutoScaleMode.Font;