Проблема: конструктор Windows Forms не работает для унаследованного пользовательского элемента управления, когда базовый класс реализует интерфейс из другой сборки.
Платформа: VS 2010 SP1 , .NET 4.0 Framework
Ошибка:
Не удалось отобразить конструктор для этот файл, потому что ни один из классов внутри него можно спроектировать. В дизайнер проверил следующее классы в файле: MyControl --- базовый класс MyBaseControlLib.MyBaseControl может не грузиться. Убедитесь, что сборка были упомянуты и что все проекты были построены.
в System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument (IDesignerSerializationManager менеджер) в System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad (IDesignerSerializationManager менеджер) в Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad (IDesignerSerializationManager serializationManager) в Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted (Int32 fReload)
У меня есть решение с 3 проектами библиотек классов:
MyInterfaceLib:
namespace MyInterfaceLib
{
public interface IMyInterface
{
void Foo();
}
}
MyBaseControlLib:
namespace MyBaseControlLib
{
using System.Windows.Forms;
using MyInterfaceLib;
public partial class MyBaseControl : UserControl, IMyInterface
{
public MyBaseControl()
{
InitializeComponent();
}
public void Foo()
{
}
}
}
MyDerivedLib:
namespace MyDerivedControlLib
{
using MyBaseControlLib;
public partial class MyControl : MyBaseControl
{
public MyControl()
{
InitializeComponent();
}
}
}
Хотя дизайнер работает с MyBaseControl, он не работает с MyControl. Если MyBaseControl не реализует IMyInterface, конструктор также работает с MyControl.
Есть идеи?
Спасибо, Роберт