2016-04-14 3 views
1

У меня есть форма под названием «CustomForm», которую я использую, чтобы иметь согласованный дизайн во всех моих формах. Все дочерние формы наследуются от него просто так же, как в классе childForm: CustomForm. Я удалил границу окна на пользовательской форме и сделал свой собственный, и поэтому у меня есть ярлык для названия окна. Я создал защищенное свойство, которое изменяет текст этого ярлыка.Ошибка конструктора, поскольку родительская форма «не имеет свойства с именем ...»

По какой-то причине, когда я пытаюсь открыть конструктор ребенка формы он говорит:

типа «Quiz.CustomForm» не имеет свойства с именем 'WindowTitle.

Я хочу, чтобы иметь возможность редактировать это свойство через конструктор в разделе «Разное» свойств формы. Это работало раньше, и я не знаю, что я сделал, чтобы это нарушить. Если я войду в файл конструктора и в InitalizeComponent, он говорит «this.WindowTitle =» Строка здесь ». И нет ошибки, потому что я создал для нее защищенное свойство в родительской форме. В среде IDE нет подчеркивания, но при попытке загрузить конструктора я получаю вышеуказанную ошибку.

Свойство в классе CustomForm выглядит следующим образом:

protected string WindowTitle 
    { 
     get { return lbl_windowTitle.Text; } 
     set { lbl_windowTitle.Text = value; } 
    } 

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

+0

@ IvanStoev OP утверждал, что они пробовали это без разницы в последнем предложении – rene

+0

@rene Хотя я уверен, что не публичные свойства не отображаются в сетке свойств, поэтому нет возможности редактировать его через конструктор * , Поэтому определенно проблема связана с тем, что свойство не является «публичным», независимо от требований OP. –

ответ

0

Это работал до и Я не знаю, что я сделал, чтобы это нарушить.

Я уверен, что вы (в настоящее время protected) WindowTitle собственность public, в противном случае нет никакого способа, чтобы увидеть/редактировать его в виде свойств - временной конструкции опоры (и System.ComponentModel в целом) работает только с public Недвижимость.

Я выполнил подобные действия и смог получить ту же ошибку.

Я пробовал делать недвижимость публичной, но это не имело значения.

Это будет иметь значение. Просто перестройте свой проект после создания имущества public, и проблема исчезнет.

+0

Ты прав. Я попытался сделать его общедоступным, но не восстановил проект, который, возможно, вызвал продолжающуюся проблему. Спасибо! –

0

Вы сказали, что вы пытались с общественной собственностью, но использовать его и атрибуты собственности должны работать нормально, как в этом примере я сделал: https://www.dropbox.com/s/45blckvgiz460h7/WindowsFormsApplication1.rar?dl=0

public partial class BaseForm : Form 
    { 
     public BaseForm() 
     { 
      InitializeComponent(); 
     } 

     [Browsable(true)] 
     [Category("Base Form")] 
     [Description("Define the window title.")] 
     public String WindowTitle 
     { 
      get { return label1.Text; } 
      set { label1.Text = value; } 
     } 
    } 
Смежные вопросы