Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Dispose: error


Автор: Competitor 31.8.2005, 16:22
При компиляции программы вышла ошибка: 'ControExplorer.Form1.Dispose(bool)': no suitable method found to override
С методом Dispose вроде все в норме:
Код

protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

Теперь даже вкладку Form1.cs[Design] нельзя посмотреть, ведь ошибка в Form1.Designer.cs
Так как это испрвить возможно?

Автор: -ser- 1.9.2005, 03:57
Цитата
Теперь даже вкладку Form1.cs[Design] нельзя посмотреть

что понимается под нельзя и что там можно увидеть применительно к данной ошибке?

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

Автор: mr.DUDA 1.9.2005, 10:36
Был изменён базовый класс у формы ? Были перенесены исходники из VS2005 в VS2003 ?

Автор: Exception 1.9.2005, 12:05
у кого наследуешь форму? как-будто нету там диспоза..

Автор: Competitor 2.9.2005, 17:25
Цитата

что понимается под нельзя и что там можно увидеть применительно к данной ошибке?

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes. Clicking on each error will take you to the line of code that caused it.

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: Form1 --- The base class 'System.Object' cannot be designed.

Hide

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)
Цитата

Был изменён базовый класс у формы ? Были перенесены исходники из VS2005 в VS2003 ?

НЕТ

Автор: mr.DUDA 2.9.2005, 23:21
Цитата
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: Form1 --- The base class 'System.Object' cannot be designed.

Вот ключ к ошибке. Класс Form1 не унаследован от System.Windows.Forms.Form, либо в основном .cs-файле формы, либо в .designer-файле.

Автор: Mad 6.9.2005, 01:30
Метод Dispose для класса Form определяеться так :
Код

public override void Dispose()


соответственно твой метод должен выглядеть так :
Код

public override void Dispose(bool disposing)
{
    if (components != null)
    {
        components.Dispose();
    }
    base.Dispose();
}

Автор: Competitor 6.9.2005, 19:07
mr.DUDA
В основном .cs-файле формы класс Form1 унаследован от System.Windows.Forms.Form
А в .designer-файле нет. Но если в нем сделать так:
Код

 partial class Form1 : System.Windows.Forms.Form

то программа будет запускаться, на экране появляется пустая форма без каких-либо элементов, которые там должны быть!
А вкладка Form1.cs[Design] по прежнему не открывается.
Добавлено @ 19:08
Mad
У меня Метод Dispose так и выглядит

Автор: Mad 6.9.2005, 20:37
Цитата(Competitor @ 6.9.2005, 18:07)
partial class Form1 : System.Windows.Forms.Form


Competitor
чего ты людям голову морочеш, тяжело сказать чтоли что ты вторую бета спецификацию используеш ?

Автор: -ser- 7.9.2005, 06:21
как уже упомянул mr.DUDA наследование класса достаточно обявить в каком-то одном файле (если мы имеем дело с partial). студия это делает в .cs-файле формы (полагаю чтобы девелопер знал с каким базовым классом он имеет дело). поэтому в .designer-файле этого нет просто за ненадобностью, и лезть туда вручную нет никакой необходимости. но если мы и добавим туда тоже самое наследование, что и в .cs, ничего измениться не должно.

вкладка Form1.cs[Design] по не открывается по другой причине. скорее всего не видит какого-то компонента. возможно изменилась версия .dll библиотеки с компонентом, который используется на форме.

Автор: mr.DUDA 7.9.2005, 09:20
Пересоздай форму заново.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)