Автоматическая установка размера столбцов сетки

так как программисты использующие ваш

Прежде чем объявить этот элемент управления законченным, я хочу снабдить его еще одной функцией. Так как программисты, использующие ваш элемент FilteredGrid, Не будут иметь непосредственного доступа к содержащейся в нем сетке, у них нет возможности декларативно устанавливать имена столбцов, их ширину и т. п. в конструкторе, который просто автоматически генерирует столбцы в зависимости от данных. В дополнение к этому весьма желательно, чтобы ширина столбцов также устанавливалась автоматически, так что их содержимое отображалось бы без переносов. Как говорилось в главе 6, в классе DataGridviewColumn Имеется свойство AutoSizeMode, Установив которое равным Allcells , можно достичь желаемого эффекта. Поэтому нужно добавить в FilteredGrid Немного кода, чтобы установить это свойство для автоматически генерированных столбцов данных. Возможно, вы также захотите дать программистам возможность выключать при желании эту функцию. Чтобы устанавливать это свойство столбцов, последние, естественно, должны существовать, что невозможно, пока не будет завершена привязка данных. К счастью, когда это происходит, элемент управления DataGridview Возбуждает событие DataBindingComplete, Что предоставляет вам самое подходящее место для выполнения подобных операций. Добавьте обработчик события для DataBindingComplete, Выбрав сетку в пространстве конструирования элемента управления FilteredGrid, И назовите обработчик OnGridDataBindingComplete. Добавьте свойство и соответствующий закрытый элемент класса, чтобы пользователи вашего элемента управления могли задавать, должна ли ширина столбцов устанавливаться Код обработчика события DataBindingComplete Проходит в цикле по всем столбцам сетки, устанавливая для их свойства AutoSizeMode Соответствующее перечислимое значение. Проделав все вышеописанное, вы получаете весьма законченный работоспособный образец специального элемента управления с привязкой к данным, созданный как пользовательский элемент управления, содержащий другие привязанные элементы управления, и управляемый через инкапсулированный источник привязки. Такой подход дает вам естественный способ инкапсуляции функций в одиночном элементе управления, который может быть утилизирован в разных местах, и позволяет в полной мере воспользоваться мощью встроенных элементов управления Framework, не зная о них ничего, кроме их открытых свойств, методов и событий.