ScrollBar'ы моргают при Resize Control'а
От: Torinous Россия  
Дата: 13.04.10 22:58
Оценка:
Есть необходимость скроллировать свой UserControl.
Он помещён в Parent Control с AutoScroll = true.
UserControl обычно поддерживает свой размер равным Parent т.е. Resize'иться вместе с ним, и в некоторых случаях может быть больше Parent тогда включаются ScrollBars.

Реализовано это примерно так, UserControl следит за размером Parenta и меняет свой вслед за ним:
    protected void SetSize()
    {
      if(net.Width >= Parent.ClientRectangle.Width)
        this.Width = net.Width;
      else
        this.Width = Parent.ClientRectangle.Width;
      
      if(net.Height >= Parent.ClientRectangle.Height)
        this.Height =  net.Height;
      else
        this.Height = Parent.ClientRectangle.Height;
    }
    
    private void ParentResizeHandler(object sender, EventArgs args)
    {
      SetSize();
    }


А Parent следит за размером UserControl`а и поддреживает AutoScrollMinSize равным размеру UserControl'a, чтобы если тот увеличиться появились ScrollBar'ы:
    private void CanvasResizeHandler(object sender, EventArgs args)
    {
      this.AutoScrollMinSize = NetCanvas.Size;
    }


Всё вроде просто, и даже работает, если бы не одно НО!
Когда я уменьшаю размеры формы, ScrollBar'ы "дребезжат". ;)
Т.е. почему-то на мгновение появляются и исчезают многократно.

По идее я поддерживаю AutoScrollMinSize равным размеру вложенного UserControl'а и их быть не должно, но они почему-то моргают. :xz:
.net c#
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.