Как создать DataTable программно

Задача: создать DataTable максимально простым, удобным и понятным кодом C#. Если у нас уже есть DataTable и мы хотим создать аналогичную, можно использовать метод Clone который создает полностью аналогичную таблицу без строк. Добавить в нее часть строк из первой таблицы … Читать далее

Нестандартная сортировка в DataGridView

Задача: изменить порядок сортировки значений в DataGridView по одному столбцу. Чаще всего стандартную сортировку приходится переделывать в случае наличия столбца со смешанными, текстово-числовыми данными или, проще говоря, строками, внутри которых содержатся числа вперемешку с текстом. Стандартная сортировка обрабатывает их как … Читать далее

Как переместить элемент управления в WinForms

Задача: изменить местоположение элемента управления, например метки, в процессе работы программы. Положение определяется двумя координатами X и Y, которые отсчитываются от левого верхнего угла контейнера, в котором находится элемент - это может быть сама форма или контейнер внутри нее вроде … Читать далее

Особенности работы с DataView, RowFilter и datetime

Задача: отфильтровать данные, загруженные из базы в DataTable (DataSet) и DataGridView без повторного обращения к БД. В C# и WinForms для этого можно использовать свойство RowFilter классов BindingSource.Filter и DataView.RowFilter . На самом деле BindingSource просто передает условие фильтрации в … Читать далее

Особенности работы свойства BindingSource.Filter при связке нескольких элементов с одним источником данных

Задача: связать несколько визуальных элементов (гриды, комбо-боксы и тд) с одним источником данных, наложив на него разные фильтры. В принципе все просто - создаем несколько BindingSource и прописываем им разные выражения в свойство BindingSource.Filter. Но если мы свяжем все BindingSource … Читать далее

Сравнение строк и дат в C#

В сравнении дат возможны три результата - раньше, равно, позже. Самый простой способ сравнения: DateTime.CompareTo Method (Object) Сравнение строк еще проще.. с учетом регистра... или без учета... а еще есть разные региональные стандарты... Если мы работаем только с одним языком, … Читать далее

Универсальная строка даты в MS SQL или ошибка The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

При формировании sql запросов очень часто используются строчные значения даты. Все бы хорошо, но формат этих строк зависит от региона, точнее говоря от региональных настроек сервера и клиента и скрытых преобразований формата datetime внутри разных программ и библиотек. Иначе говоря, … Читать далее

Выделяем весь текст в большом количестве NumericUpDown по клику

В руководствах предлагают подсчитывать длину превращенного в строку значения NumericUpDown, но на практике это приводит к мелким глюкам, так что я просто делаю выделение на длину, заведомо большую всех возможных значений: Если NumericUpDown'ов много, то ручное проставление создание функций для … Читать далее

Как выделить/встать/поставить курсор в TextBox

Вроде бы очень простая задача, но требует некоторого шаманства. Простые методы вроде Focus работают не всегда и не везде, в итоге на практике я использую следующий код: TextBox.Select Method Работает и для MaskedTextBox Выбрать весь текст можно методом TextBox.SelectAll Для … Читать далее

Мерцающие элементы управления WinForms/C#

Достаточно редкий и сюрреалистично выглядящий глюк WinForms - пропадающие и снова появляющиеся элементы управления, например связанные комбо-боксы. Это сбои в отрисовке, один из возможных источников - длительное время выполнения кода, подписанного часто возникающие внутри этих управляторов события. Само простое - … Читать далее