Запомнить размеры и положения столбцов для DataGridView

olegov
Дата: 21.01.2010 11:39:46
Собственно с самим механизмом сохранения/восстановления проблем нету. Есть проблема с запуском этого механизма. Например восстановить это все можно (например из xml) в событии Paint. Сохранять каждый раз, когда что-то изменилось со столбцами не очень культурно. А в каком событии сохранить ? По сути это событие когда объект (DataGridView) удаляется из памяти. А какое это событие ?


P.S. В фоксе у всех контролов было событие Destroy. Оно являлось последним в жизни контрола.

Пишу как умею. Дорого, долго...
virus_system
Дата: 21.01.2010 11:50:57
from MSDN....
When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the Select or SelectNextControl methods, or by setting the ContainerControl..::.ActiveControl property to the current form, focus events occur in the following order:

Enter
GotFocus
Leave
Validating
Validated
LostFocus

When you change the focus by using the mouse or by calling the Focus method, focus events occur in the following order:

Enter
GotFocus
LostFocus
Leave
Validating
Validated

If the CausesValidation property is set to false, the Validating and Validated events are suppressed.

If the Cancel property of the CancelEventArgs is set to true in the Validating event delegate, all events that would usually occur after the Validating event are suppressed.

For more information about handling events, see Consuming Events.
Алексей К
Дата: 21.01.2010 11:56:04
override Dispose(bool disposing) ?
olegov
Дата: 21.01.2010 12:30:12
virus_system
from MSDN....
When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the Select or SelectNextControl methods, or by setting the ContainerControl..::.ActiveControl property to the current form, focus events occur in the following order:

Enter
GotFocus
Leave
Validating
Validated
LostFocus

When you change the focus by using the mouse or by calling the Focus method, focus events occur in the following order:

Enter
GotFocus
LostFocus
Leave
Validating
Validated

If the CausesValidation property is set to false, the Validating and Validated events are suppressed.

If the Cancel property of the CancelEventArgs is set to true in the Validating event delegate, all events that would usually occur after the Validating event are suppressed.

For more information about handling events, see Consuming Events.


А вот это Вы к чему сейчас сказали ? Меня совершенно не интересуеют события возникающие при обходе контролов на форме.
olegov
Дата: 21.01.2010 12:40:16
Нет такого у DataGridView
есть DestroyHandle(), но к тому моменту столбцов уже нет :(

Алексей К
override Dispose(bool disposing) ?
Алексей К
Дата: 21.01.2010 12:44:04
olegov
Нет такого у DataGridView
есть DestroyHandle(), но к тому моменту столбцов уже нет :(

Алексей К
override Dispose(bool disposing) ?

    class MyDataGridView : DataGridView
    {
        protected override void Dispose(bool disposing)
        {
            // сохранять тут
            base.Dispose(disposing);
        }
    }
Алексей К
Дата: 21.01.2010 13:03:24
IPersistComponentSettings ещё есть...
olegov
Дата: 21.01.2010 13:16:47
То же непонятно. Ладно, обошолся
ColumnDisplayIndexChanged и ColumnWidthChanged
Пишу как умею. Дорого, долго...
skyANA
Дата: 21.01.2010 14:04:46
А что дёргает механизм сохранения/восстановления? Наследник DataGridView, или форма, на которой он расположен?
МСУ
Дата: 21.01.2010 14:09:06
Алексей К
olegov
Нет такого у DataGridView
есть DestroyHandle(), но к тому моменту столбцов уже нет :(

Алексей К
override Dispose(bool disposing) ?

    class MyDataGridView : DataGridView
    {
        protected override void Dispose(bool disposing)
        {
            // сохранять тут
            base.Dispose(disposing);
        }
    }


Зачем? То есть эти манипуляции в диспоузе будут происходить всегда, даже если мы не трогали колонки. Почему бы не писать в настройки по факту, т.е. когда произошло событие изменения размера?