Как вызвать Invalidate () в пользовательском элементе управления, если свойство свойства принадлежит пользовательскому элементу управления? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть пользовательский индикатор выполнения, у которого есть свойство, представляющее собой массив класса с именем Bar. Мне нужно вызвать функцию Invalidate (), когда свойство этого элемента управления Bar[i].Length было изменено. Как я могу это сделать?

мой элемент управления:

 public class SegmentedProgressBar : ProgressBar
    {
      ....

    public Bar[] Bars
    {
    get{return bars;}
    set
    {
    bars = value; 
    Invalidate();
    }
    }

    ....
    }

Мне нужно, чтобы Invalidate () вызывался автоматически, когда Bar.Length изменилось

void ChangeBarLength()
{
   segmPBar.Bars[0].Length = 10;
}

ОБНОВЛЕНИЕ : Добавлен класс баров

public class Bar
{

    public Bar(long length, long start)
    {
        this.length = length;
        this.start = start;
    }

    long length;
    long start;

    public long Start {
        get { return start; }

        set {
            start = value;
        }
    }
    public long Length {
        get { return length; }
        set { length = value; }
    }
}

ОБНОВЛЕНИЕ2: Работало с использованием события PropertyChanged

public long Length {
        get { return length; }
        set { 
            if(value != length && PropertyChanged!=null)
                PropertyChanged(this,EventArgs.Empty);
            length = value;


        }
    }
...