2014-01-19 4 views
0

У меня есть основания с этикеткой & 2 кнопки, когда я наследовать его в виде ребенка, он получает только этикетку, но не кнопкиC вопрос # форма наследования

Я понятия не имею, почему он наследует один но не другой, не так ли?

, что я пытался сделать по этому поводу:

1- изменили элементы управления модификаторов в базовой форме к защищенному тогда общественность, до сих пор только ярлык получает в наследство

2- упаковали новый пустой тестовый проект с от с текстовым полем и кнопкой & ребенок формой наследования, он прекрасно работает т.е. появляется оба элемента управления в дочерней форме

3- назад к моему проекту, я удалил форму (родитель & ребенка) воссоздан основную форма с меткой и двумя кнопками по умолчанию (без настройки l шрифт, текст или размер), а затем создал дочернюю форму, наследующую его, вплоть до того, как он отлично работает, все элементы управления отображаются в дочерней форме. После того как я настроил элементы управления на родительском конструкторе, кнопки исчезли из дочернего элемента, остался только ярлык

образец код:

MainEdit форма конструкции файл автоматически генерируется VS2012

private System.Windows.Forms.Label editheader_lbl; 
private System.Windows.Forms.Button cancel_btn; 
private System.Windows.Forms.Button save_btn 
private void InitializeComponent() 
    { 
     this.editheader_lbl = new System.Windows.Forms.Label(); 
     this.cancel_btn = new System.Windows.Forms.Button(); 
     this.save_btn = new System.Windows.Forms.Button(); 
     this.SuspendLayout(); 
     // 
     // editheader_lbl 
     // 
     this.editheader_lbl.Anchor = System.Windows.Forms.AnchorStyles.Top; 
     this.editheader_lbl.AutoSize = true; 
     this.editheader_lbl.Location = new System.Drawing.Point(164, 11); 
     this.editheader_lbl.Name = "editheader_lbl"; 
     this.editheader_lbl.Size = new System.Drawing.Size(44, 13); 
     this.editheader_lbl.TabIndex = 7; 
     this.editheader_lbl.Text = "edit info"; 
     this.editheader_lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 
     // 
     // cancel_btn 
     // 
     this.cancel_btn.Location = new System.Drawing.Point(321, 278); 
     this.cancel_btn.Name = "cancel_btn"; 
     this.cancel_btn.Size = new System.Drawing.Size(75, 23); 
     this.cancel_btn.TabIndex = 9; 
     this.cancel_btn.Text = "cancel"; 
     this.cancel_btn.UseVisualStyleBackColor = true; 
     // 
     // save_btn 
     // 
     this.save_btn.Location = new System.Drawing.Point(143, 278); 
     this.save_btn.Name = "save_btn"; 
     this.save_btn.Size = new System.Drawing.Size(75, 23); 
     this.save_btn.TabIndex = 8; 
     this.save_btn.Text = "save"; 
     this.save_btn.UseVisualStyleBackColor = true; 
     // 
     // MainEdit 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(533, 331); 
     this.ControlBox = false; 
     this.Controls.Add(this.cancel_btn); 
     this.Controls.Add(this.save_btn); 
     this.Controls.Add(this.editheader_lbl); 
     this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 
     this.Name = "MainEdit"; 
     this.RightToLeft = System.Windows.Forms.RightToLeft.Yes; 
     this.RightToLeftLayout = true; 
     this.ShowIcon = false; 
     this.ShowInTaskbar = false; 
     this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 
     this.TopMost = true; 
     this.ResumeLayout(false); 
     this.PerformLayout(); 

    } 

MainEdit.cs

public MainEdit() 
    { 
     InitializeComponent(); 
     this.Text = string.Empty; 
     this.editheader_lbl.Font = Program.font_l; 
     this.save_btn.Font = Program.font_btn; 
     this.save_btn.Size = Program.btnSize; 
     this.save_btn.Text = Constants.SAVE; 
     this.cancel_btn.Font = Program.font_btn; 
     this.cancel_btn.Size = Program.btnSize; 
     this.cancel_btn.Text = Constants.CANCEL; 
    } 

Edit_Employee.cs .. ребенок форма

public partial class Edit_Employee : MainEdit 
{ 
    public Edit_Employee() 
    { 
     InitializeComponent(); 
    } 
} 

обновление

случайно, кнопка мыши была нажата в то время как я двигался, и это сделало область выбора на форме ребенка. есть 2 символа блокировки, где должны быть кнопки, я думаю, это означает, что кнопки есть, но я их просто не вижу! Я пойду попробовать предложения, которые я получил до сих пор, и держать вас в курсе, спасибо за всех, кто помог до сих пор

обновление -2

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

до сих пор не вижу, где размер редактирования вызывает проблемы, но я думаю, этот вопрос решается @ Chiel92 надеюсь, что вы разместите свое предложение в качестве ответа, так что я могу принять его и закрыть эту нить

еще раз спасибо

+1

Как это не наследуется? Вы имеете в виду, что кнопки не видны в дочерней форме? –

+0

@ Chiel92 Да, этикетка попадает на дочернюю форму, но без кнопок. когда я изменил личный доступ по умолчанию на защищенный, я могу получить доступ к кнопкам через код, но все же они не отображаются в форме – Katia

+0

Вы уверены, что расположение кнопок находится в пределах размера дочерних форм? –

ответ

0

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

MainEdit.cs (не частичный, созданный визуальной студией)

public partial class MainEdit 
{ 
protected System.Windows.Forms.Label editheader_lbl; 
protected System.Windows.Forms.Button cancel_btn; 
protected System.Windows.Forms.Button save_btn 
public MainEdit() 
    { 
     InitializeComponent(); 
     this.Text = string.Empty; 
     this.editheader_lbl.Font = Program.font_l; 
     this.save_btn.Font = Program.font_btn; 
     this.save_btn.Size = Program.btnSize; 
     this.save_btn.Text = Constants.SAVE; 
     this.cancel_btn.Font = Program.font_btn; 
     this.cancel_btn.Size = Program.btnSize; 
     this.cancel_btn.Text = Constants.CANCEL; 
    } 
} 
+0

Я попытался изменить модификаторы в защищенные, я могу получить доступ к элементам управления через код, но они все еще не отображаются в форме. или вы имеете в виду, что я не должен использовать автоматически созданную форму вообще и просто писать ее самостоятельно? – Katia

+0

Вы имеете в виду, что я не должен использовать автоматически созданную форму вообще и просто написать ее самостоятельно? да, что я имею в виду –

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