2013-04-19 1 views
1

У меня есть проект VisualBasic со многими формами, и один из них является form1.Whenever initializecimponent метод вызывается, VS перестает отвечать, и я должен закончить его с помощью taskmgr.The ошибка находится внутри form1.designer.vb, потому что я могу просматривать и редактировать другие формы и usercontrols в дизайнере. Не странно, что автономный exe успешно работает за пределами IDE. Я также попытался добавить форму в другой проект, и этот проект тоже сработает .Когда я создаю/debug/view form1 в дизайнере, я получаю два диалога один за другим: VS2010 перестает работать, VS2010 перезапускается (но он никогда не делает!)VS 2010 перестает отвечать при открытии конструктора форм

+0

Я бы рекомендовал открыть документ-конструктор в блокноте - «formname.designer.vb» и опубликовать его также. Кроме того, если вы знаете какие-либо DLL-файлы, на которые вы ссылаетесь, и если вы используете какие-либо ресурсы, вы можете также упомянуть об этом. – DBNickel

ответ

2

Создайте копию формы и начните удаление частей формы, пока она не будет работать. Последнее, что вы удалили, - это то, что не удалось. Вы должны будете сделать это вручную, удалив три части каждого элемента управления:

  • Декларация (в нижней части)
  • инстанциации (в верхней части)
  • Конфигурация (в середине). Ниже приведен пример конфигурации

' 
    'LeftLabel 
    ' 
    Me.LeftLabel.Anchor = System.Windows.Forms.AnchorStyles.Left 
    Me.LeftLabel.AutoSize = True 
    Me.LeftLabel.Location = New System.Drawing.Point(3, 3) 
    Me.LeftLabel.Name = "LeftLabel" 
    Me.LeftLabel.Size = New System.Drawing.Size(39, 13) 
    Me.LeftLabel.TabIndex = 1 
    Me.LeftLabel.Text = "Label2" 

Вам также необходимо удалить все ссылки на этот элемент управления, например, он добавляется в контейнер.

Выполняйте этот контроль одновременно, затем создайте проект и откройте форму. Если форма НЕ открыта, перезапустите визуальную студию и выполните следующий элемент управления. если он открыт, то последним, что вы удалили, был преступник.

+0

Форма очень тяжелая и имеет сотни элементов управления (это похоже на mini os). По-человечески невозможно сделать пробную версию и ошибку для каждого элемента управления. Спасибо за быстрый ответ – farizrahman4u

+1

Не согласен. Подумайте о бинарном поиске. Возьмите первую половину элементов управления и удалите их. Все еще ломаются? вы знаете, что это в другой половине. Намочите, промойте, повторите. O (logn) прямо там. Я не вижу другого способа справиться с этим, учитывая, что эти «сотни элементов управления» неизвестны для использования, нет сообщения об ошибке и т. Д. Единственное, что мы знаем, это «theres control». vs errors '... –

+1

Можно также легко утверждать, что форма с «сотнями элементов управления» суждено стать все более громоздкой и неустойчивой. Подумайте о том, чтобы разбить это на другие формы или пользовательские элементы управления. делает вещи намного, намного более управляемыми. –

0

Для программистов, сталкивающихся с одной и той же проблемой, вот решение: Убедитесь, что пользовательские элементы управления не создают экземпляры самих себя. Даже если ваша программа может работать без ошибок, разработчик VS будет разбит. примером такого рода кода:

Public class controlx 
    public sub new() 
     dim x as new controlx 
    End sub 
End class 

вы могли бы подумать, что его глупая логическая ошибка, но такие ошибки могут быть очень расстраивает и время consuming.always пробоя код на более мелкие единицы, так что его управляемым, как сказал Брайан ,

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