Может кто-нибудь сказать мне, что не так в этой части кода - PullRequest
1 голос
/ 14 мая 2010

Лучше принять мою ошибку с этим вопросом.Я перепутал вещи, поэтому у меня была эта проблема.Извините, что беспокою вас, люди ...

string name = ((DateTimePicker)sender).Name.ToString();
        name = name.Substring(0, name.Length - 1);
        name = name + "4";
        TimeSpan duration = new TimeSpan();
        duration = ((DateTimePicker)sender).Value - ((DateTimePicker)panel2.Controls[name]).Value;
        name = name.Substring(0, name.Length - 1);
        name = name + "6";
        ((MaskedTextBox)panel2.Controls[name]).Text = duration.ToString();

При выполнении он дает мне ссылку на объект, не установленную для экземпляра объекта, аналогичные функции используются в других местах, но я не могу выяснить, что мне нужно для повторной инициализацииздесь: $

альтернативный текст http://www.freeimagehosting.net/uploads/735eefb5db.jpg

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

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

Лотов ...

Используйте 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 и т. Д.).

Кажется, вы здесь что-то делаете совершенно неправильно. Возможно, вам следует начать с объяснения фактической проблемы, которую вы пытаетесь решить, вместо этого конкретного исключения. Смотрите « тонкая металлическая линейка ».

0 голосов
/ 14 мая 2010

Убедитесь, что вы правильно сформировали «имя» и существует элемент управления с таким именем. И эта панель 2 не равна нулю.

...