Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > scoll on winform


Автор: Shit_happenes 27.2.2009, 23:21
Есть форма.
у формы установлено свойство AutoScroll = true,
заданны AutoScrollMinSize для отображения ScrollBar.
На форму закинут слева сверху простой UserControl. 

Вот теперь самое интересное:
запускаем форму.
прокрутили скроллинг.
кликнули куда-то по рабочему столу или ещё куда-то,
затем опять кликнули по форме.
и скроллинг вернулся в нулевую позицию, т.е. не сохранил наше прокрученное значение.

Как избежать подобной ситуации?

Добавлено через 8 минут и 20 секунд
Тема закрыта.
Кому интересно:
Помогли два события Scroll и Paint.

Автор: Shit_happenes 27.2.2009, 23:48
Новый прикол.
Если задать свойство UserControll'a   Dock = DockStyle.Fill;
То таже самая проблема со скроллингом.

Как избежать подобной ситуации?

Автор: -Mikle- 28.2.2009, 19:59
создал новый проект
установил AutoScroll = true
задал AutoScrollMinSize
кинул Panel вместо UserControl

покликал везде, свернул-развернул и скролл остался на месте...
Цитата(Shit_happenes @  28.2.2009,  02:48 Найти цитируемый пост)
Новый прикол.
Если задать свойство UserControll'a   Dock = DockStyle.Fill

задал, все работает как надо.

Вывод: вероятно, где-то в коде, вы используете любо сброс, либо еще что-то, что заставляет обнулиться скроллинг, и происходит это у вас в каком-либо обработчике события, которое генерируется при активизации/отображении формы (Activate, Paint и т.п.)... Ищите где и что у Вас не так сами или давайте необходимое количество исходного кода! Телепатов здесь нет...

Автор: Shit_happenes 2.3.2009, 22:43
Код UserControl'a

Код

    public class UserControl1 : UserControl
    {
        public UserControl1()
        {            
            this.BackColor = 
                System.Drawing.SystemColors.HighlightText;
        }
    }


Код формы

Код

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            UserControl1 uc = new UserControl1();
            this.Controls.Add(uc);
            this.AutoScroll = true;
            this.AutoScrollMinSize = new Size(20000, 6500);
        }
    }


К примеру можно и свернуть потом опять открыть. 
На самомо деле это баг GDI+.

Решением данного вопроса является использование контролов HScrollBar & VScrollBar.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)