.net Windows窗体设计器自定义控件更改在运行时正常工作但在设计时不正常工作的锚点

.net Windows窗体设计器自定义控件更改在运行时正常工作但在设计时不正常工作的锚点,.net,c++,visual-studio-2010,custom-controls,windows-forms-designer,.net,C++,Visual Studio 2010,Custom Controls,Windows Forms Designer,自定义控件在自定义标签上的锚属性中设置所需的值 当Serializable设置为Visible时,我将获得为运行时生成的代码,我没有使用类型内容,但设计器中的控件具有给定标签的锚定值(左和上),因此要在设计器中获得正确的行为,需要手动(非)更改锚定属性 我真的不想写一个设计师来完成这项工作(以我的进度,我认为这不明智!),有没有更简单的方法 public: [DesignerSerializationVisibility(DesignerSerializationVisibility::Vis

自定义控件在自定义标签上的锚属性中设置所需的值

当Serializable设置为Visible时,我将获得为运行时生成的代码,我没有使用类型内容,但设计器中的控件具有给定标签的锚定值(左和上),因此要在设计器中获得正确的行为,需要手动(非)更改锚定属性

我真的不想写一个设计师来完成这项工作(以我的进度,我认为这不明智!),有没有更简单的方法

public:
 [DesignerSerializationVisibility(DesignerSerializationVisibility::Visible)]
  virtual property System::Windows::Forms::AnchorStyles Anchor
   {
    System::Windows::Forms::AnchorStyles get() override
     {
      return static_cast<System::Windows::Forms::AnchorStyles
       ((System::Windows::Forms::AnchorStyles::Top
       | System::Windows::Forms::AnchorStyles::Left) 
       | System::Windows::Forms::AnchorStyles::Right);;
     }

    void set(System::Windows::Forms::AnchorStyles x) override
     {
      __super::Anchor = static_cast<System::Windows::Forms::AnchorStyles
       ((System::Windows::Forms::AnchorStyles::Top
       | System::Windows::Forms::AnchorStyles::Left) 
       | System::Windows::Forms::AnchorStyles::Right);

     }
   }
公共:
[DesignerSerializationVisibility(DesignerSerializationVisibility::Visible)]
虚拟财产系统::Windows::窗体::主播样式主播
{
System::Windows::Forms::AnchorStyles get()覆盖
{

return static_cast您正在对属性值进行硬编码。因此,请在构造函数中指定该值,使其不可浏览,这样它就不会显示在属性窗口中,并确保该值不能更改且不会序列化。如下所示:

ref class MyControl : Control {
public:
    MyControl() {
        __super::Anchor = AnchorStyles::Top | AnchorStyles::Left | AnchorStyles::Right;
    }

    [Browsable(false), EditorBrowsable(EditorBrowsableState::Never)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility::Hidden)]
    virtual property System::Windows::Forms::AnchorStyles Anchor {
        AnchorStyles get() override {
            return __super::Anchor;
        }
        void set(AnchorStyles) override {
            // do nothing
        }
    }
};

再说一次,你是对的。如果我的名声允许的话,我会给你投票的。