2

以下情况:

我有一个名为的组件类ButtonGroupStyleController和一个以此属性命名的控件类EnhancedButton

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Browsable(true)]
public ButtonGroupStyleController StyleController { get; set;}

在表单设计器的设计期间,我现在想在此属性的属性网格中填充一个下拉列表,ButtonGroupStyleController其中包含当前放置在表单上的所有实例,类似于标准表单属性AcceptButtonCancelButton,其中列出了所有 Button 实例形式。

我希望我清楚地描述了我的问题并且可以理解。

STyleControllerCode 目前仍然几乎是空的,因为我想先实现问题中的功能

namespace DarkTower.Core.Rendering.Forms
{
    [Serializable]
    public class ButtonGroupStyleController : Component, INotifyPropertyChanged
    {
        public ButtonGroupStyleController()
        {

        }

        public event PropertyChangedEventHandler PropertyChanged;

        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

根据我的测试,您可以定义以下类以在设计时显示实例列表。

public class EnhancedButton:Button
    {

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [Browsable(true)]
        public ButtonGroupStyleController StyleController { get; set; }

    }

 [Serializable]
    public class ButtonGroupStyleController : Component, INotifyPropertyChanged
    {

        public ButtonGroupStyleController()
        {
            this.Text = "Hi Winform";
        }
        private string text;

        public string Text
        {
            get { return text; }
            set
            {
                text = value;
                OnPropertyChanged("Text");
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;

        //[NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName=null)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
            
        }

    }

添加两个类后,请重新构建项目并从工具箱中将 EnhanceButton 和 ButtonGroupStyleController 添加到您的表单中。

最后,请找到名为 stylecontroller 的属性,您将看到结果。

于 2021-01-18T06:35:21.100 回答