Стиль раскладки таблицы инструментов - PullRequest
0 голосов
/ 21 июня 2010

с использованием win # форм c # 2008.

Возможно, мне здесь не хватает чего-то очевидного, но кто-нибудь может мне помочь с использованием стиля раскладки таблиц на панели инструментов.Я ожидал, что это будет похоже на использование элемента управления tablelayout в конструкторе и возможность использовать desinger для назначения элементов управления на панели инструментов для какого-либо вида таблицы grid, но ни одно из этих свойств не отображается.

Когда я устанавливаю стиль для tablelayout и добавляю элементы управления, они просто оказываются в вертикальной линии, и кажется, что нет никаких свойств для установки сетки стиля tablelayout, а затем выделяют элементы управления для квадрата в сетке.Я надеялся, что все это можно сделать в дизайне.

Может кто-нибудь, пожалуйста, посоветуйте

спасибо

1 Ответ

0 голосов
/ 27 мая 2011

Вы можете создать поставщика расширений, как описано в статье блога MSDN: jfoscoding : Использование TableLayout в ToolStrip в Designer .

Вот (слегка переформатированный) код с этой страницы:

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;
        }
    }
}
...