У меня есть.NET 2,0 приложения форм окон, которые делают интенсивное использование ListView
управление.
Я разделил на подклассы ListView
класс в шаблонное SortableListView<T>
класс, таким образом, это может быть немного более умно о том, как это отображает вещи и сам вид.
К сожалению, это, кажется, повреждает Конструктор форм Visual Studio, и в VS2005 и в 2008.
Программа компилирует и хорошо работает, но когда я пробую, просматривают форму владения в разработчике, я получаю эти Ошибки:
Нет никакой информации о строке отслеживания стека или ошибки, доступной для этой ошибки
В MyApp. Основной. Designer.cs Line:XYZ Column:1
Call stack:
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)
Рассматриваемая строка кода - то, где она на самом деле добавляется к форме и
this.imagesTab.Controls.Add( this.listViewImages );
listViewImages объявляется как
private MyApp.Controls.SortableListView<Image> listViewImages;
и инстанцирован в InitializeComponent
метод следующим образом:
this.listViewImages = new MyApp.Controls.SortableListView<Image>();
Как отмечалось ранее, программа компилирует и работает отлично, и я попытался сместиться SortableListView
класс к отдельному блоку, таким образом, это может быть скомпилировано отдельно, но это не имеет никакого значения.
Я понятия не имею, куда пойти отсюда. Любая справка ценилась бы!
, когда Вы добавили listview, Вы добавляли его к панели инструментов и затем добавляли его к форме?
нет, я просто отредактировал Main.Designer.cs
и изменил его с System.Windows.Forms.ListView
до MyApp.Controls.SortableListView<Image>
Подозрение, что это, возможно, произошло из-за дженериков, привел меня к фактическому нахождению решения.
Для каждого класса, для которого я должен сделать SortableListView, я определил 'тупиковый класс' как это
class ImagesListView : SortableListView<Image> { }
, Затем сделал Main.Designer.cs
, файл относится к этим тупиковым классам вместо SortableListView
.
Это теперь работает, ура!
К счастью я могу сделать это, потому что все мои типы известны впереди, и я только использую SortableListView
в качестве метода сокращения дублирующего кода.
У меня была проблема как это (tho не то же) в прошлом, где мое управление было в другом пространстве имен к моей форме даже tho, это было в том же проекте. Для фиксации его, я должен был добавить
using My.Other.Namespace;
к вершине сгенерированного файла кода разработчика. Раздражающая вещь была этим, продолжал сдуваться, когда разработчик повторно создал страницу.
когда Вы добавили listview, Вы добавляли его к панели инструментов и затем добавляли его к форме?
Блок, который содержит MyApp. Средства управления. SortableListView не установлен в GAC, случайно это?
У меня было нечто подобное - пользовательский элемент управления имел в виду удаленную службу (которую я не мог гарантировать, чтобы она была доступна во время разработки).
В этом сообщении на MSDN я предлагал добавить
if (this.DesignMode) return;
к функции загрузки элемента управления, или, в моем случае, к точке до инициализации клиента WCF. Это сработало.
Итак,
private readonly Client _client = new Client();
становится
private Client _client;
public new void Load()
{
if(DesignMode) return;
_client = new Client();
}