要求封装一个按钮:
功能:在click之后按钮变enabled 变成 Flase 执行结束 变回来
同时要增加一个属性就是要不要这个功能:
这个功能为True,则实现上面的功能
为False的时候,则和普通的按钮一样小弟,不懂,请指教!
贴点代码最好拉!
谢谢

解决方案 »

  1.   

    delphi代码帮忙翻译一下
    // 增加属性 执行过程中是否禁止属性的按钮(默认禁止)
      TLebutButton = class(TButton)
      private
        FClicksDisabled: Boolean;
      public
        procedure Click; override;    {*
          构造器
          @param AOwner 所有者
        }
        constructor Create(AOwner: TComponent); override;
        { Public declarations }
      published
        // 执行过程中是否禁止的按钮(是-禁止、否-不禁止、默认禁止)
        property ClicksDisabled: Boolean read FClicksDisabled write FClicksDisabled default True;
        { Published declarations }
      end;procedure TLebutButton.Click;
    begin
      try
        if FClicksDisabled then
          Enabled := False;
        inherited;
      finally
        Enabled := True;
      end;
    end;constructor TLebutButton.Create(AOwner: TComponent);
    begin
      inherited;
      FClicksDisabled := True;
    end;
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.ComponentModel;namespace lw.CSharp.Test
    {
        public class WrapperButton : Button
        {
            public delegate void FeedbackEventHandler(object sender, FeedbackEventArgs e);
            public event FeedbackEventHandler OnFeedback;        private bool _waitFeedback = true;        public WrapperButton()
                : base()
            {
            }
            /// <summary>
            /// Gets or Sets the value to indicate whether the Button wait for Feedback or not
            /// </summary>
            [DefaultValue(true),
            Description("Gets or Sets the value to indicate whether the Button wait for feedback or not")]
            public bool WaitFeedback
            {
                get { return _waitFeedback; }
                set { _waitFeedback = value; }
            }        protected override void OnClick(EventArgs e)
            {
                if (_waitFeedback) this.Enabled = false;
                base.OnClick(e);
                FeedbackEventArgs fe = new FeedbackEventArgs();
                fe.e = e;
                fe.WaitFeedback = _waitFeedback;
                if (OnFeedback != null) OnFeedback(this, fe);
            }
        }    public class FeedbackEventArgs
        {
            private bool _waitFeedback;
            private EventArgs _e;        public FeedbackEventArgs() { }        public bool WaitFeedback
            {
                get { return _waitFeedback; }
                set { _waitFeedback = value; }
            }        public EventArgs e
            {
                get { return _e; }
                set { _e = value; }
            }
        }
    }
    Test Code:private void wrapperButton1_Click(object sender, EventArgs e)
            {
                wrapperButton1.OnFeedback += new WrapperButton.FeedbackEventHandler(wrapperButton1_OnFeedback);
                MessageBox.Show("Testing...");
            }        void wrapperButton1_OnFeedback(object sender, FeedbackEventArgs e)
            {
                wrapperButton1.Enabled = true;
            }
      

  3.   

    Test Code作下修改:void wrapperButton1_OnFeedback(object sender, FeedbackEventArgs e)
            {
                if (e.WaitFeedback)
                {
                    wrapperButton1.Enabled = true;
                }
            }
      

  4.   

    基本同意LS...如果只是实现这样的简单功能,不用那么多代码的...protected override void OnClick(EventArgs e)
    {
          if (_waitFeedback) {this.Enabled = false};
          base.OnClick(e);
          if (_waitFeedback) {this.Enabled = true};
    }