Лотов ...
Используйте String.Format (), чтобы сделать это немного понятнее. Это нормально - не использовать StringBuilder для этого, но очень сложно понять, что вы пытаетесь сделать.
Кроме того, такие вещи, как
(DateTimePicker)sender
Не должно повторяться. Примените один раз и повторно используйте объект.
DateTimePicker _castObject = (DateTimePicker)sender;
Ошибка obj not ref может быть на любом из этих объектов. Если вы не пройдете или не добавите защитные заявления (ниже), у вас будет чертовски много времени, чтобы понять это.
if (sender == null)
{ throw new ArgumentNullException("sender", "sender is null");}
Если это происходит в стандартном обработчике событий в вашей форме, это будет выглядеть примерно так (извините, VB, я больше не могу делать c # из памяти).
Protected Function btnOK_Click(sender as Object, e as EventArgs) Handles btnOK.Click
'your code'
End Function
Если вы видите что-то похожее, то нет смысла использовать какой-либо объект в форме. Просто получите к нему доступ по имени элемента управления (btnOK, txtMaskedTextBox и т. Д.).
Кажется, вы здесь что-то делаете совершенно неправильно. Возможно, вам следует начать с объяснения фактической проблемы, которую вы пытаетесь решить, вместо этого конкретного исключения. Смотрите « тонкая металлическая линейка ».