Mam projekt WinForm i utworzyłem klasę na zespole A, która dziedziczy po System.Windows.Forms.Form
, aby służyć jako klasa podstawowa dla różnych formularzy w moim projekcie, klasa bazowa jest coś takiego:Projektant WinForm Visual Studio 2008 nie załaduje formularza, który dziedziczy z klasy ogólnej
public partial class DataForm<T> : Form where T : class
{
T currentRecord;
protected T CurrentRecord
{
get
{
return currentRecord;
}
set
{
currentRecord = value;
CurrentRecordChanged();
}
}
}
Teraz kiedy utworzyć formularz na montaż B, która dziedziczy z mojego DataForm projektant nie będzie ładować, ale gdybym go skompilować aplikacja działa poprawnie.
Formularz wygląda następująco:
public partial class SomeTableWindow : DataForm<SomeTable>
{
public SomeTableWindow()
{
InitializeComponent();
}
}
Błąd Dostaję jest:
The designer could not be shown for this file because none of the classes within it can be designed.
The designer inspected the following classes in the file: CultivosWindow --- The base
class 'TripleH.Erp.Controls.DataForm' could not be loaded. Ensure the assembly has
been referenced and that all projects have been built.
Instances of this error (1)
1. Hide Call Stack
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
Jest to błąd na projektanta ?, Czy robię coś źle? Czy jest jakieś obejście tego?
Dziękujemy za pomoc
Dziękuję bardzo, miałeś rację. – albertein
Mogę potwierdzić, że to obejście działa. I działa niezależnie od tego, czy wstawisz klasę pośrednią (np. GenericInt) do złożenia ** A ** lub zespołu ** B **. –