我正在创建一个 Office 2010 插件,它的行为应该类似于 Word 2003 中可用的工具栏。当它处于浮动模式时,我应该能够调整自定义任务窗格的大小。在 Word 2003 中,我们可以使用 CommandBar 类来完成此功能,但在 Word 2010 中则不行。
我为 Word 2010 创建了一个插件,其中我有一个自定义任务窗格,其中包含以下层次结构中的控件。
CustomTaskPane UserControl FlowLayoutPanel ToolStrip ToolStripButton
我写了一个 Flow Layout Panel 的 Paint Event。flow.Paint +=new PaintEventHandler(flow_Resize);
public void flow_Resize(object sender, PaintEventArgs e)
{
FlowLayoutPanel flow = sender as FlowLayoutPanel;
var item = listCtpMgr.FirstOrDefault(o => o.flp.Name == flow.Name);
if (item == null)
return;
addedCTP = (Microsoft.Office.Tools.CustomTaskPane)item.ctp;
if (addedCTP == null)
return;
ToolStrip _toolstrip = (ToolStrip)flow.Controls[0];
int MaxButtonWidthforThisToolbar = 0;
foreach (ToolStripItem toolStripItem in _toolstrip.Items)
{
if ((toolStripItem.Width) > MaxButtonWidthforThisToolbar)
{
MaxButtonWidthforThisToolbar = (toolStripItem.Width);
}
}
MaxButtonWidthforThisToolbar += 10;
if (addedCTP.DockPosition == MsoCTPDockPosition.msoCTPDockPositionLeft || addedCTP.DockPosition ==
MsoCTPDockPosition.msoCTPDockPositionRight)
{
if (addedCTP.Width < MaxButtonWidthforThisToolbar)
addedCTP.Width = MaxButtonWidthforThisToolbar;
}
else if (addedCTP.DockPosition == MsoCTPDockPosition.msoCTPDockPositionTop || addedCTP.DockPosition ==
MsoCTPDockPosition.msoCTPDockPositionBottom)
{
addedCTP.Height = 50;
}
else
{
addedCTP.Width = _toolstrip.Width + 27;
addedCTP.Height = _toolstrip.Height + 57;
}
}
我可以从左侧和右侧调整自定义任务窗格的大小,但在浮动时不能从顶部或底部调整。当我调整它的大小时它也在闪烁。请帮忙。