Правила размещения кода для формы - PullRequest
1 голос
/ 26 мая 2010

Перемещая некоторый код в целях исследования, я натолкнулся на небольшую особенность .NET, о которой я не знал, а именно, что класс формы должен быть первым классом в модуле формы для работы дизайнера форм. Следующее мешает дизайнеру работать:

public class myClass
{
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

...
}

Он все еще компилируется (с предупреждением) и запускается, но не будет проектироваться. Если я переместить myClass в конец файла, то он работает нормально. Кто-нибудь знает, почему это так?

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

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Я думаю, что это артефакт дизайнера .NET 1.1. Тогда еще не было ключевого слова частичное , у дизайнера была незавидная задача найти метод InitializeComponent () даже в коде, который находился в процессе редактирования. Никакой помощи от компилятора.

Чтобы избежать риска неправильной интерпретации кода, в нем были некоторые основные правила о том, как должен выглядеть этот код. И требование, чтобы класс формы был первым классом в файле, имеет большой смысл. Если бы этого правила не было, оно должно было бы иметь возможность проанализировать класс, который может иметь очень простые синтаксические ошибки, такие как несбалансированные скобки. Простое объявление «не могу загрузить форму» в этом случае никого не порадует.

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

Это единственное правило верстки кода, которое я знаю. Существует лотов других возможных неудач, и ручное использование InitializeComponent () всегда является хорошим способом получить WSOD.

0 голосов
/ 26 мая 2010

Видимо, это просто дизайнер. Не о чем беспокоиться.

Это не имеет ничего общего с самим C #, но больше касается дизайнера Visual Studio, который находит и рисует форму на экране.

...