1. Построение приложений с привязанными данными в Windows Forms

Отображение вычисляемых данных в виртуальном режиме

например вам нужно представить в

Другим сценарием, где вам может потребоваться явный контроль над формированием отображаемых значений ячеек, является случай, когда вы работаете с данными, содержащими вычисляемые значения, особенно в сочетании с привязанными данными и большими наборами данных. Например, вам нужно представить в сетке коллекцию данных, которая содержит десятки тысяч или даже миллионы строк. Конечно, прежде всего следует подумать о целесообразности такого варианта, но если это действительно нужно, вы, наверное, не захотите забивать память своей системы, размножая копии этих данных. Вы, возможно, не захотите даже загружать в память сразу все данные, особенно если они создаются динамически или вычисляются. Однако вам требуется, чтобы пользователь мог беспрепятственно покручивать данные, находя то, что представляет для него интерес. Виртуальный режим сетки DataGridView Позволяет отображать значения ячеек по мере их поступления, поэтому эти данные не нужно держать в памяти, пока они не используются. При виртуальном режиме вы можете на этапе проектирования специфицировать, какие столбцы содержит сетка, а значения ячеек передавать позднее, чтобы они отображались только во время выполнения, но не ранее. Внутреннее представление сетки будет хранить только значения ячеек, отображаемых в данный момент; значения ячеек предоставляются по мере необходимости.

Работа с псевдотаблицами

псевдотаблица сама по себе не

Другим способом манипуляции данными, содержащимися в наборе данных, в целях обработки или просмотра является использование псевдотаблицы. Псевдотаблица сама по себе не содержит никаких данных; она является лишь некоторым видом на данные таблицы, находящейся под ней. Можете считать ее как бы объективом, который вы располагаете над таблицей и который заставляет ее выглядеть по-дру — гому для потребителя псевдотаблицы, хотя нижележащие данные остаются все теми же данными, сохраняемыми в таблице, которую псевдотаблица представляет. Вы можете модифицировать данные, экспонируемую через псевдотаблицу, и когда вы это делаете, вы в действительности непосредственно модифицируете данные в нижележащей таблице. Каждый экземпляр DataTable Уже имеет ассоциированный с ним экземпляр DataView По умолчанию, и в действительности именно он используется, когда вы привязываете таблицу к сетке. Вы можете делать модификации в псевдотаблице по умолчанию, что повлияет на все элементы управления, привязанные к нижележащей таблице, либо вы можете конструировать новые экземпляры объекта DataView Вокруг таблицы для целей сортировки или фильтрации данных. Класс DataView Реализует свойства Sort, RowFilter И RowstateFiIter, Которые позволяют модифицировать то, какие данные экспонирует псев — дотаблица. Вы устанавливаете в свойстве Sort Выражение, специфицирующее, по какому столбцу сортировать и в каком порядке. Вы можете установить выражение RowFilter, Используя тот же синтаксис, что поддерживается методом DataTable. Select, Для ограничения представленных в псевдотаблице строк в зависимости от некоторого критерия, сходного с предложением WHERE в операторе SQL. Наконец, вы можете использовать RowState Filter, Чтобы видеть только строки в определенном состоянии, только удаленные или только добавленные строки. Вы можете использовать все это в комбинации, чтобы специфицировать довольно сложные критерии фильтрации и сортировки для экспонирования содержащихся в таблице данных почти в любом необходимом вам виде:

Код пишет Visual Studio

вы можете сделать то же

Ясно, что когда весь этот код пишет Visual Studio, это удобнее и оставляет меньше места для ошибок, чем при собственноручном его написании. Вы можете сделать то же самое, программируя объекты самостоятельно. Например, если вам не требуется поддерживать обновление, то не нужно предусматривать команды вставки, обновления, удаления и их параметры. Можно также воспользоваться поведением Gridview по умолчанию, чтобы генерировать столбцы в зависимости от данных, к которым привязывается сетка. В результате код в листинге А. З, генерированный Visual Studio, может быть урезан до кода, показанного в листингах А. 4 и А. 5. Преимуществом элемента SqlDataSource Является быстрота. Вы можете перетаскивать объекты из Server Explorer на поверхность конструктора, а он будет генерировать соответствующий код, включаемый в вашу страницу. Можно воспользоваться также мастером Configure Data Source, чтобы определить запрос, ассоциированный с уже добавленным на страницу элементом источника данных. Это позволяет вам просто перетащить с инструментальной панели на страницу элемент управления SqlDataSource, А затем с помощью мастера генерировать код привязки.

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

Управление и контроль в приложениях Windows Forms

это элементы управления b menustrip

Есть три новых элемента управления, которые вы, вероятно, захотите применять почти в каждом приложении Windows Forms, которое вы пишете. Это элементы управления MenuStrip, ToolStrip И StatusStrip. В. NET 2.0 они служат заменой старых элементов управления MainMenu, ToolBar И StatusBar Из. NET 1.x. Как и упомянутый выше Splitter, Старые элементы управления все еще входят в Framework по соображениям обратной совместимости. Однако в любых новых приложениях вы должны перейти на использование этих трех полосковых элементов управления, как основных для такого рода функций. Как моно понять из названий, MenuStrip И StatusStrip Являются в действительности лишь специализированными версиями ToolStrip. Сам по себе Toolstrip Является развитым контейнерным элементом управления, который позволяет вам добавлять к полоске другие элементы управления, которые будут располагаться в ряд. Инструментальная полоска поддерживает стыковку с любой из четырех сторон содержащего ее контейнера. Вы можете также встроить Toolstrip В ToolStripContainer. Это позволит пользователю организовать любое желаемое расположение инструментальных полосок, к чему большинство людей привыкло, работая с инструментальными панелями Microsoft Office. Кроме того, инструментальная полоска поддерживает область переполнения, что позволяет элементам уходить с полоски вправо или вниз, если для них не хватает места, но оставаться доступными через стрелку выпадающего списка, появляющуюся в конце полоски. Элемент управления MenuStrip По умолчанию стыкуется с верхом формы и позволяет вам легко добавлять нужные меню и элементы меню, с текстом, изображениями и подменю, как вы и могли бы ожидать. Поскольку полоска меню является специализированной инструментальной полоской, вы можете добавлять к ней элементы управления того же рода, что и к инструментальной полоске. Элемент управления Statusstrip Концептуально очень похож на полоску меню, но стыкуется по умолчанию с низом формы и предусматривает панели Statusstrippanel, Куда вы помещаете информацию, отображаемую в строке состояния, а также другие элементы управления, такие, как кнопки и индикаторы процесса

Наложение ограничений на изменение данных

устанавливая в b false b

Источник привязки может играть роль контролера, ограничивающего доступ к нижележащим данным, причем поведение самого источника данных менять нет нужды. Устанавливая в False Свойства AllowEdit, AllowNew И AllowRemove Интерфейса IBindingList, Вы запрещаете коду клиента вносить в данные соответствующие изменения. Установка этих свойств заставляет элементы данных, поддерживаемые источником привязки, выглядеть так, как будто они недоступны для тех или иных операций модификации.

На любые вызовы от привязанных элементов управления к методам интерфейса IBindingList, Имеющие целью определить, поддерживает ли источник данных редактирование, добавление или удаление элементов, вместо источника данных ответит источник привязки. Элементы управления или программный код смогут затем так изменить свое поведение, чтобы работать с данными в режиме «только чтение». Для восстановления исходного поведения источника привязки в смысле добавления новых элементов вызовите метод ResetAllowNew. Для разрешения редактирования или удаления соответствующих методов нет, но вы можете явным образом установить нужные значения в свойствах AllowEdit И AllowRemove. Привязка текстовых или целочисленных данных к сеткам и элементам управления редко представляет собой проблему, если вам уже знакомы основные методы привязки данных в Windows Forms. Однако ситуация становится чуть сложнее, если речь заходит о числах с плавающей точкой, датах или изображениях, сохраняемых в базе данных. Проблема с этими типами в том, что их форматы в базе данных не обязательно прямо соответствуют тому, как вам хотелось бы их представлять.