“Не удалось найти тип” ошибкой при загрузке формы в Разработчике Windows Forms

У меня есть.NET 2,0 приложения форм окон, которые делают интенсивное использование ListView управление.

Я разделил на подклассы ListView класс в шаблонное SortableListView<T> класс, таким образом, это может быть немного более умно о том, как это отображает вещи и сам вид.

К сожалению, это, кажется, повреждает Конструктор форм Visual Studio, и в VS2005 и в 2008.

Программа компилирует и хорошо работает, но когда я пробую, просматривают форму владения в разработчике, я получаю эти Ошибки:

  • Не удалось найти тип 'MyApp. Средства управления. SortableListView'. Удостоверьтесь, что на блок, который содержит этот тип, ссылаются. Если этот тип является частью Вашего проекта разработки, удостоверьтесь, что проект был успешно разработан.

Нет никакой информации о строке отслеживания стека или ошибки, доступной для этой ошибки

  • Переменная 'listViewImages' является или необъявленной или никогда не присваивалась.

В 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 класс к отдельному блоку, таким образом, это может быть скомпилировано отдельно, но это не имеет никакого значения.

Я понятия не имею, куда пойти отсюда. Любая справка ценилась бы!

33
задан Orion Edwards 25 March 2015 в 00:56
поделиться

5 ответов

, когда Вы добавили listview, Вы добавляли его к панели инструментов и затем добавляли его к форме?

нет, я просто отредактировал Main.Designer.cs и изменил его с System.Windows.Forms.ListView до MyApp.Controls.SortableListView<Image>

Подозрение, что это, возможно, произошло из-за дженериков, привел меня к фактическому нахождению решения.

Для каждого класса, для которого я должен сделать SortableListView, я определил 'тупиковый класс' как это

class ImagesListView : SortableListView<Image> { }

, Затем сделал Main.Designer.cs, файл относится к этим тупиковым классам вместо SortableListView.

Это теперь работает, ура!

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

8
ответ дан 27 November 2019 в 18:21
поделиться

У меня была проблема как это (tho не то же) в прошлом, где мое управление было в другом пространстве имен к моей форме даже tho, это было в том же проекте. Для фиксации его, я должен был добавить

using My.Other.Namespace;

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

6
ответ дан 27 November 2019 в 18:21
поделиться

когда Вы добавили listview, Вы добавляли его к панели инструментов и затем добавляли его к форме?

2
ответ дан 27 November 2019 в 18:21
поделиться

Блок, который содержит MyApp. Средства управления. SortableListView не установлен в GAC, случайно это?

2
ответ дан 27 November 2019 в 18:21
поделиться

У меня было нечто подобное - пользовательский элемент управления имел в виду удаленную службу (которую я не мог гарантировать, чтобы она была доступна во время разработки).

В этом сообщении на 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();
}
1
ответ дан 27 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: