AutoResizing WinForm без скроллинга?
От: Аноним  
Дата: 26.02.13 08:11
Оценка:
Есть автономная WinForm, заполненная DataGridView.
В конструкторе DataGridView заполняется столбцами и строками, выравнивание всех размеров установлено AllCell.
Затем форма показывается, но с обоими ScrollBar'ами, т.к. итоговый размер грида больше исходных размеров формы.
Вопрос: как автоматически изменить размеры формы так, чтобы области прокрутки исчезли?
Может, алгоритм расчета какой есть?

Спасибо.
Re: AutoResizing WinForm без скроллинга?
От: Sinatr Германия  
Дата: 26.02.13 08:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос: как автоматически изменить размеры формы так, чтобы области прокрутки исчезли?


Попробовать в FormShown сделать ClientRect = dataGridView.Size ? И делать то же каждый раз когда данные изменились (на вскидку не скажу какое событие, плюс возможно лучше ловить то, что привязано к DataSource).
---
ПроГLамеры объединяйтесь..
Re[2]: AutoResizing WinForm без скроллинга?
От: Аноним  
Дата: 26.02.13 08:59
Оценка:
Здравствуйте, Sinatr, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Вопрос: как автоматически изменить размеры формы так, чтобы области прокрутки исчезли?


S>Попробовать в FormShown сделать ClientRect = dataGridView.Size ? И делать то же каждый раз когда данные изменились (на вскидку не скажу какое событие, плюс возможно лучше ловить то, что привязано к DataSource).

Не могу понять, как вычислить в гриде область, занимаемую данными?
В Shown смотрел — там у грида исходные размеры.
Не очень ясно, в какой момент они меняются
Re[3]: AutoResizing WinForm без скроллинга?
От: Sinatr Германия  
Дата: 26.02.13 10:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не могу понять, как вычислить в гриде область, занимаемую данными?


Если грид как-то ресайзится, чтобы поместить в себя все данные (судя по ТЗ), значит учиться вычислять размеры грида не нужно. Вопрос, как именно он ресайзится? Т.к. в идеале нужно ресайзить форму сразу после этого. Но в принципе всегда можно использовать грязные трюки (по типу poll timer, даж не знаю как это по русски, который может все время проверять не соотвествие между размерами грида и формой и фиксить как надо).
---
ПроГLамеры объединяйтесь..
Re[4]: AutoResizing WinForm без скроллинга?
От: Аноним  
Дата: 26.02.13 10:40
Оценка:
Здравствуйте, Sinatr, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Не могу понять, как вычислить в гриде область, занимаемую данными?


S>Если грид как-то ресайзится, чтобы поместить в себя все данные (судя по ТЗ), значит учиться вычислять размеры грида не нужно. Вопрос, как именно он ресайзится? Т.к. в идеале нужно ресайзить форму сразу после этого. Но в принципе всегда можно использовать грязные трюки (по типу poll timer, даж не знаю как это по русски, который может все время проверять не соотвествие между размерами грида и формой и фиксить как надо).

Случайно получилось:
Форма
AutoSize = true;
FormBorderStyle = Sizable
Грид:
AutoSize = true;
ScrollBars = None;

При этом в гриде снизу и справа две темные полосы, как будто от скролбаров, но это не они.
А так видно даже как форма сама ресайзится при показе.
Re[5]: AutoResizing WinForm без скроллинга?
От: Sinatr Германия  
Дата: 26.02.13 11:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>При этом в гриде снизу и справа две темные полосы, как будто от скролбаров, но это не они.


Перестал понимать что нужно. Может всего-навсего убрать скролбары с формы this.AutoScroll = false?
---
ПроГLамеры объединяйтесь..
Re[6]: AutoResizing WinForm без скроллинга?
От: Аноним  
Дата: 26.02.13 11:23
Оценка:
Здравствуйте, Sinatr, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>При этом в гриде снизу и справа две темные полосы, как будто от скролбаров, но это не они.


S>Перестал понимать что нужно.

Так у меня все получилось с теми настройками, спасибо
S>Может всего-навсего убрать скролбары с формы this.AutoScroll = false?
AutoScroll у меня и так false (похоже это именно он и вытягивает форму в нужный размер), но полосы все равно видны.
Я их затенил через DataGridView.BackGroundColor, так что все вроде хорошо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.