Как у вас есть кнопка в сетке свойств? - PullRequest
5 голосов
/ 29 июня 2011

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

Есть ли способ сделать это?

Заранее признателен за помощь!

Ответы [ 3 ]

7 голосов
/ 29 июня 2011

Рекомендую прочитать Максимальное использование .NET Framework PropertyGrid Control .

В нем рассказывается, как создать пользовательский интерфейс для вашей собственности, который может включать кнопку, которая открывает всплывающее окно / отдельную форму / и т. Д.

1 голос
/ 20 июля 2016

Я добавил свернуть все и развернуть все кнопки в PropertyGrid, используя методы расширения.

Кнопки PropertyGrid

namespace MyNameSpace
{

    public static class PropertyGridHelper
    {

        private static PropertyGrid getPropertyGridParent(object sender)
        {
            PropertyGrid propertyGrid = null;
            ToolStripButton toolStripButton = sender as ToolStripButton;

            // ToolStripButton -> ToolStrip -> PropertyGrid
            if (toolStripButton != null)
            {
                ToolStrip toolStrip = toolStripButton.GetCurrentParent() as ToolStrip;

                if (toolStrip != null)
                {
                    propertyGrid = toolStrip.Parent as PropertyGrid;

                    if (propertyGrid != null)
                    {
                        propertyGrid.CollapseAllGridItems();
                    }
                }
            }  
            return propertyGrid;
        }

        private static void propertyGridCollapseAllClick(object sender, EventArgs e)
        {
            PropertyGrid propertyGrid = getPropertyGridParent(sender);

            if (propertyGrid != null)
            {
                propertyGrid.CollapseAllGridItems();
            }         
        }

        private static void propertyGridExpandAllClick(object sender, EventArgs e)
        {
            PropertyGrid propertyGrid = getPropertyGridParent(sender);

            if (propertyGrid != null)
            {
                propertyGrid.ExpandAllGridItems();
            }
        }

        public static void AddCollapseExpandAllButtons(this System.Windows.Forms.PropertyGrid propertyGrid)
        {

            foreach (Control control in propertyGrid.Controls)
            {
                ToolStrip toolStrip = control as ToolStrip;

                if (toolStrip != null)
                {
                    toolStrip.Items.Add(new ToolStripButton("", Properties.Resources.CollapseAll, propertyGridCollapseAllClick));
                    toolStrip.Items.Add(new ToolStripButton("", Properties.Resources.ExpandAll, propertyGridExpandAllClick));
                }
            }
        }
     }
 }
1 голос
/ 30 июня 2011

UITypeEditor, используя IWindowsFormsEditorService ... вот что это было. Понял! Спасибо за направление!

...