0

ProgressBar が 0 または 100 のときにイベントを発生させたいのですが、努力にもかかわらず、Value プロパティの ProgressBar イベントでそのようなイベントが見つかりませんでした。そのようなイベントを自分で実装するにはどうすればよいでしょうか?

そのようなイベントはどこで宣言できますか?

4

1 に答える 1

2

ProgressBarは単なる であるため、一部のイベントindicatorをサポートしていません。ValueChangedただし、必要に応じて、そのようなイベントや他の同様のイベントをサポートするようにカスタマイズできます。

    public class CustomProgressBar : ProgressBar
    {
        public event EventHandler ReachedMinimum;
        public event EventHandler ReachedMaximum;
        public event EventHandler ValueChanged;            
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.Msg == 0x402)//PBM_SETPOS = WM_USER + 2
            {     
               EventHandler handler = ValueChanged;
               if(handler != null) handler(this, EventArgs.Empty);
               handler = ReachedMinimum;                    
               if (Value == Minimum && handler!=null) handler(this, EventArgs.Empty);
               handler = ReachedMaximum;
               if (Value == Maximum && handler != null) handler(this, EventArgs.Empty);
            } 
        }
    }
    //Use it
    customProgressBar1.ReachedMaximum += (s,e) => {
          MessageBox.Show("Reached maximum!");
    };
    //... the same for other events
于 2013-09-14T16:45:00.320 に答える