2009-08-13 16 views
0

の奇妙な場合はたぶんタイトルはそれほど明確ではないが、これは私が経験してるものです:プロパティ継承動作

  • 私はOKとCancelボタンをが含まれているベースのフォームを作成しましたこのフォームはまた、次のようになり、いくつかの特性を持っている(これはBaseOkCancelButtonFormと呼ばれている) :今

    [Browsable (true)] 
        [Category ("Design")] 
        [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] 
        public string OkButtonText 
        { 
         get 
         { 
          return btnOk.Text; 
         } 
         set 
         { 
          btnOk.Text = value; 
         } 
        } 
    
        [Browsable (true)] 
        [Category ("Design")] 
        [DefaultValue (true)] 
        [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] 
        public bool OkButtonVisible 
        { 
         get 
         { 
          return btnOk.Visible; 
         } 
         set 
         { 
          btnOk.Visible = value; 
         } 
        } 
    
        [Browsable (true)] 
        [Category ("Design")] 
        [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] 
        public string CancelButtonText 
        { 
         get 
         { 
          return btnCancel.Text; 
         } 
         set 
         { 
          btnCancel.Text = value; 
         } 
        } 
    
        [Browsable (true)] 
        [Category ("Design")] 
        [DefaultValue (true)] 
        [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] 
        public bool CancelButtonVisible 
        { 
         get 
         { 
          return btnCancel.Visible; 
         } 
         set 
         { 
          btnCancel.Visible = value; 
         } 
        } 
    

を、これは何が起こっているかである: 私はこれで新しいフォームを作成します私のBaseOkCancelButtonFormから継承します。

継承されたフォームのCancelButtonTextプロパティを変更してプロジェクトを再構築すると、すべてが正常に行われます。キャンセルボタンのテキストは、設定したテキストのままです。 しかし、CancelButtonVisibleプロパティで同じ操作を行うと、状況が正しくありません。 CancelButtonVisibleプロパティをfalseに設定してプロジェクトを再構築すると、VS.NETはこのプロパティの値をtrueにリセットします。 :?

変更された値はデザイナーによって保持されません。 これは動作を知られていますか?私は何か間違っているのですか?

答えて

0

ええと、基本フォームのCancelButtonをprotectedにすると、これが機能するようです。 しかし、私はそれをしたくありません。 さらに、これを行う必要もないはずです(ボタンのテキストプロパティを変更すると、ボタンを保護する必要はありません)。

奇妙です。