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

Верификация в Windows Forms

примеры верификации включают в себя

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

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

Замораживание столбцов и строк

часто при прокрутке можно потерять

Когда вы имеете дело с массой столбцов или строк, прокрутка неизбежна. Часто при прокрутке можно потерять контекст строк или столбцов, на которые вы смотрите, особенно если этот контекст указывается значениями в каких-то других строках ил столбцах. Скажем, вы прокручиваете сетку с информацией о продуктах. Если в ней много столбцов, ассоциированных с каждым из продуктов, то при прокрутке вправо, когда вы хотите просмотреть не видимые в данный момент столбцы, вы потеряете контекст наименования продукта, которое при прокрутке уходит с экрана влево. На самом деле в такой ситуации вам нужно заморозить столбец с наименованиями продуктов, чтобы он все время оставался на экране, а прокручивались только остальные столбцы. Подобным же образом бывают случаи, когда вам нужно отображать одну или несколько строк в верхней части сетки, которые должны оставаться на месте при прокрутке сетки вниз к другим ее строкам. В элементе управления DataGridView Это достигается просто: нужно лишь установить в True Свойство Frozen Соответствующего столбца или строки. В частности, если вы замораживаете столбец, то этот столбец и все столбцы слева от него не будут сдвигаться, когда вы производите прокрутку к правому краю сетки. Точно так же при замораживании строки эта строка и те, что расположены выше, не будут смещаться, когда вы станете прокручивать сетку вниз. Если вы собираетесь заморозить столбец или строку, то скорее всего захотите как-то визуально обозначить для пользователя логическую границу между замороженным элементом и незамороженными, которые находятся рядом. Проще всего это можно сделать, установив для свойства Dividerwidth Столбца или DividerHeight Строки значение, отличное от значения по умолчанию. Эти свойства являются целыми значениями, указывающими, сколько пикселов используется для рисования разделителя между ячейками данного столбца или строки и соседними ячейками. Вот простой пример кода, замораживающего одновременно столбец и строку с заданием ширины разделителя: