Я создаю приложение для регистрации времени работы сотрудника. Все данные времени для всех пользователей будут храниться в базе данных SQL в формате UTC. Передним интерфейсом будет приложение Windows Forms, которое отображает время и принимает входные данные в локальном часовом поясе пользователя. Приложение WinForms имеет элемент управления DataGridView
, в котором время будет отображаться и вводиться пользователями.WinForms DataGridView - редактирование ввода пользователя перед записью в DataSource
DataGridView
связан с List
от TimeSegment
объектов. TimeSegment
является структурой я создал которая в основном это:
struct TimeSegment
{
private DateTime start, end;
public TimeSegment(DateTime start, DateTime end){
Start = start;
End = end;
}
public DateTime Start
{
get { return start; }
set {
if (value.Kind != DateTimeKind.Utc)
throw new ArgumentException("Only UTC dates are allowed.");
start = value;
}
}
//There is an End property which is just like the Start
//property, but for the 'end' field.
}
Таким образом, в DataGridView
, будет колонок времен начала и колонна конца времен, с каждой строкой, представляющей каким-то событием или задачу пользователя выполняется.
Я знаю, как преобразовать внутреннее время UTC в местный часовой пояс для отображения с помощью события DataGridView.CellFormatting
. Проблема, с которой я столкнулась, заключается в том, что вы вводите пользовательский ввод по местному времени и конвертируете в UTC перед отправкой обновления в DataSource
из DataGridView
.
Я видел несколько других должностей, показывающих, как изменить текст в ячейке на DataGridView
«s CellParsing
или CellValidating
событий, но мне нужно, чтобы изменить реальный объект, который получает текст разобранные, как, что отправляется в DataSource
,
Есть ли способ переопределить поведение синтаксического анализа ячейки и указать, какой объект должен быть отправлен в DataSource?
почему вы не можете сделать редактирование данных в 'OnBound' Событие DataGridView ..? – MethodMan
Не является ли [DataGridView.CellParsing] (https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellparsing (v = vs.110) .aspx) событием именно для этого ? Даже образец в документации показывает преобразование в UTC. –
@ MethodMan - я не вижу никакого события DataGridView.OnBound./@ Иван - Спасибо, я на самом деле просто пересматривал эту страницу, прежде чем проверять ее здесь. Я думаю, что это ответ. – JamesFaix