在Paint事件处理程序上垂直调整FlowLayoutPanel的大小? C#

时间:2013-05-28 12:02:43

标签: c#

我正在创建一个Office 2010 Add In,它应该像Word 2003中提供的工具栏一样。 我应该能够在浮动模式下调整自定义任务窗格的大小。 在Word 2003中,我们可以使用CommandBar类来完成此功能,但不能在Word 2010中使用。

我为Word 2010创建了一个添加项,其中我有一个自定义任务窗格,其中包含以下层次结构中的控件。

CustomTaskPane         用户控件                 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;
               }

           }

我能够从左侧和右侧调整自定义任务窗格,但在浮动时不能从顶部或底部调整。当我调整它时,它也会闪烁。请帮助。

0 个答案:

没有答案