Trackbar problem

I want to handle Trackbar control ValueChanged event, but only when scrolling stopped. All time while user drags the handle, I need to ignore this and handle new value only when dragging finished. Is it possible with Trackbar control? If this is impossible, what other control can I use to get the same functionality?
I have API solution for this: handle WM_HSCROLL messages in the parent form, but I prefer .NET solution.
LVL 48
AlexFMAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Bob LearnedCommented:
You could skip using the ValueChanged event altogether:

  private int _currentValue = -1;
  private void trackBar1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  {
    _currentValue = ((TrackBar)sender).Value;
  }

  private void trackBar1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {

    int val = ((TrackBar)sender).Value;

    if (val != _currentValue)
      MessageBox.Show("New Value=" + val);
  }

Bob
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
AlexFMAuthor Commented:
Thanks. This may work for mouse but it is possible to move handle using keyboard, this also requires handling.
0
Bob LearnedCommented:
You can handle the keyboard changes like this:

  private void trackBar1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
  {
    switch (e.KeyCode)
    {
      case Keys.Right:
      case Keys.Left:
      case Keys.PageUp:
      case Keys.PageDown:
      case Keys.Home:
      case Keys.End:
        MessageBox.Show("New Value=" + ((TrackBar)sender).Value);
        break;

      default:
        break;

    }

Bob
0
AlexFMAuthor Commented:
Well, I think I will prefer API solution.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.