2010-06-21 5 views
0

utilisant les winforms C# 2008.Style de tablelayout de la barre d'outils

Je peux manquer quelque chose d'évident ici, mais quelqu'un peut-il m'aider à utiliser le style tablelayout dans un tooltrip. Je m'attendais à ce que ce soit similaire à l'utilisation d'un contrôle tablelayout dans le concepteur, et pouvoir utiliser le desinger pour assigner des contrôles dans la tooltrip à un tablelayout quelconque, mais aucune de ces propriétés n'est visible. Lorsque je définis le style sur tablelayout et que j'ajoute des contrôles, ils se retrouvent simplement dans une ligne verticale, et il ne semble pas y avoir de propriétés pour définir une grille de style tablelayout, puis allouer les contrôles à un carré dans le la grille. J'espérais que tout cela pourrait être fait dans le desinger.

Quelqu'un pourrait-il s'il vous plaît conseiller

grâce

Répondre

0

Vous pouvez créer un fournisseur d'extension comme expliqué dans un article de blog MSDN par jfoscoding: Using TableLayout in ToolStrip in the Designer.

Voici le (légèrement reformaté) le code de cette page:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Windows.Forms; 
using System.ComponentModel; 

namespace Microsoft.Samples { 
    [ProvideProperty("ColumnSpan", typeof(ToolStripItem))] 
    [ProvideProperty("RowSpan", typeof(ToolStripItem))] 
    [ProvideProperty("Anchor", typeof(ToolStripItem))] 
    [ProvideProperty("Dock", typeof(ToolStripItem))] 
    class TableLayoutToolStrip : ToolStrip, IExtenderProvider { 

     public TableLayoutToolStrip() { 
      this.LayoutStyle = ToolStripLayoutStyle.Table; 
      RowCount = 3; 
      ColumnCount = 3; 
     } 

     private TableLayoutSettings TableLayoutSettings { 
      get { 
       return LayoutSettings as TableLayoutSettings; 
      } 
     } 

     [DefaultValue(3)] 
     public int RowCount { 
      get { 
       if (TableLayoutSettings != null) { 
        return TableLayoutSettings.RowCount; 
       } 
       return -1; 
      } 
      set { 
       if (TableLayoutSettings != null) { 
        TableLayoutSettings.RowCount = value; 
       } 
      } 
     } 

     [DefaultValue(3)] 
     public int ColumnCount { 
      get { 
       if (TableLayoutSettings != null) { 
        return TableLayoutSettings.ColumnCount; 
       } 
       return -1; 
      } 
      set { 
       if (TableLayoutSettings != null) { 
        TableLayoutSettings.ColumnCount = value; 
       } 

      } 
     } 

     public override System.Drawing.Size GetPreferredSize(System.Drawing.Size proposedSize) { 
      // be friendly if there's no items left to 
      // pin the control open. 

      if (Items.Count == 0) { 
       return this.DefaultSize; 
      } 

      return base.GetPreferredSize(proposedSize); 
     } 

     [DefaultValue(1)] 
     [DisplayName("ColumnSpan")] 
     public int GetColumnSpan(object target) { 
      return TableLayoutSettings.GetColumnSpan(target); 
     } 

     public void SetColumnSpan(object target, int value) { 
      TableLayoutSettings.SetColumnSpan(target, value); 
     } 

     [DefaultValue(1)] 
     [DisplayName("RowSpan")] 
     public int GetRowSpan(object target) { 
      if (TableLayoutSettings != null) { 
       return TableLayoutSettings.GetRowSpan(target); 
      } 
      return 1; 
     } 

     public void SetRowSpan(object target, int value) { 
      if (TableLayoutSettings != null) { 
       TableLayoutSettings.SetRowSpan(target, value); 
      } 
     } 

     [Editor(typeof(System.ComponentModel.Design.CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))] 
     [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
     public TableLayoutColumnStyleCollection ColumnStyles { 
      get { 
       if (TableLayoutSettings != null) { 
        return TableLayoutSettings.ColumnStyles; 
       } 
       return null; 
      } 
     } 

     [Editor(typeof(System.ComponentModel.Design.CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))] 
     [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
     public TableLayoutRowStyleCollection RowStyles { 
      get { 
       if (TableLayoutSettings != null) { 
        return TableLayoutSettings.RowStyles; 
       } 
       return null; 
      } 
     } 

     [DisplayName("Anchor")] 
     [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
     public AnchorStyles GetAnchor(object target) { 
      ToolStripItem tsi = target as ToolStripItem; 
      return (tsi != null) ? tsi.Anchor : AnchorStyles.None; 

     } 

     public void SetAnchor(object target, AnchorStyles value) { 
      ToolStripItem tsi = target as ToolStripItem; 
      if (tsi != null) { 
       tsi.Anchor = value; 
      } 
     } 

     [DisplayName("Dock")] 
     [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
     public DockStyle GetDock(object target) { 
      ToolStripItem tsi = target as ToolStripItem; 
      return (tsi != null) ? tsi.Dock : DockStyle.None; 

     } 

     public void SetDock(object target, DockStyle value) { 
      ToolStripItem tsi = target as ToolStripItem; 
      if (tsi != null) { 
       tsi.Dock = value; 
      } 
     } 

     bool IExtenderProvider.CanExtend(object extendee) { 
      ToolStripItem tsi = extendee as ToolStripItem; 
      return tsi != null && tsi.Owner == this; 
     } 
    } 
} 
+1

Hmm, pas sûr s'il est bon de copier le * tout le code *, inchangé; J'ai renommé le lien pour au moins donner de meilleurs crédits à l'origine du code. – stakx

Questions connexes