2016-02-26 2 views
0

У меня есть пользовательский элемент управления на C# Windows Forms. Каждый раз, когда я создаю проект, меняют код в моих свойствах и появляется окно сообщения. Кто-нибудь знает почему?окна форм пользовательские свойства управления выполняют код при сборке

public string Name 
{ 
    get 
    { 
     if(xpto != null) 
     { 
      return mystring; 
     } 
     else 
     { 
      MessageBox.Show("message"); 
      return string.Empty; 
     } 
    } 
} 
+1

при создании или при запуске? Я не могу его использовать во время сборки. – CarbineCoder

+0

Нужна дополнительная информация о 'xpto'. Мое предположение заключается в том, что вы не инициализируете объект и, следовательно, сообщение. Не будем знать наверняка, пока не увидим весь код. –

+0

Несомненно, это возможно, когда вы строите. Дизайнер запросит определенные свойства, чтобы построить представление вашей формы. Какова цель этого кода? Почему вы показываете окно сообщения в геттере? Прекратите это делать, и вы решите свою проблему. –

ответ

0

Мне кажется, что «xpto» не устанавливается перед вызовом свойства. Ваш код будет запускать ветку «else», если «xpto» не был установлен (или был установлен в null).

Это означает, что что-то в вашем коде вызывает ваше свойство «Имя», прежде чем вы инициализируете «xpto» (или вы сами устанавливаете «xpto» на null). Таким образом, «xpto» будет null, когда вызывается «Имя», и отображается окно сообщения.

EDIT: Кроме того, если это происходит в процессе сборки, это, вероятно, потому, что дизайнер не установит «xpto», сам. Вместо этого он использует свойства, которые ему нужны, такие как «Имя», «Текст» и т. Д. Поэтому, когда дизайнер называет «Имя», он не учитывает «xpto» перед собой, а «xpto» будет null, когда дизайнер получает свойство «Имя».

+0

. Я понимаю, что я должен был просить о некоторых пояснениях в комментариях, но у меня пока нет комментариев. Извините, если это проблема. – RoyalPotato

Смежные вопросы