Page 1 of 1

Is there a way?

Posted: Fri Dec 22, 2023 9:01 am
by LanceAllen
I'm utilizing bands and wish to enable mouse interaction, including mouse resize and move. However, I'm interested in implementing a "StepSize" feature, restricting valid values to increments like 1.0, 1.5, 2.0, 2.5, 3.0, and so on. Is there a way to achieve this functionality?

Re: Is there a way?

Posted: Fri Dec 22, 2023 2:07 pm
by ArctionKestutis
For such kind of functionality event handlers are very useful. You can subscribe to band.ValuesChanged event and in event handler implement value change logic as you wish. For example, you can compare new band's value to some reference (+-) step-value:

Code: Select all

        double _dBegin;
        double _dEnd;

        private void BandX_ValuesChanged(object sender, ValuesChangedEventArgs e)
        {
            _chart.BeginUpdate();

            double step = 5;

            if(_dBegin + step == Math.Round(e.NewBeginValue) || _dBegin - step == Math.Round(e.NewBeginValue))
            {
                _dBegin = Math.Round(e.NewBeginValue);
                Band bandX = sender as Band;
                bandX.ValuesChanged -= BandX_ValuesChanged;
                bandX.ValueBegin = _dBegin;
                bandX.ValuesChanged += BandX_ValuesChanged;
            }
            else
            {
                Band bandX = sender as Band;
                bandX.ValuesChanged -= BandX_ValuesChanged;
                bandX.ValueBegin = _dBegin;
                bandX.ValuesChanged += BandX_ValuesChanged;
            }

            if (_dEnd + step == Math.Round(e.NewEndValue) || _dEnd - step == Math.Round(e.NewEndValue))
            {
                _dEnd = Math.Round(e.NewEndValue);
                Band bandX = sender as Band;
                bandX.ValuesChanged -= BandX_ValuesChanged;
                bandX.ValueEnd = _dEnd;
                bandX.ValuesChanged += BandX_ValuesChanged;
            }
            else
            {
                Band bandX = sender as Band;
                bandX.ValuesChanged -= BandX_ValuesChanged;
                bandX.ValueEnd = _dEnd;
                bandX.ValuesChanged += BandX_ValuesChanged;
            }

            _chart.EndUpdate();
        }
Hope this helps.
All the best