Несколько классов в одной форме - PullRequest
1 голос
/ 11 марта 2011

Я использую TabControl в своей форме, и это заставило меня задуматься.Сейчас у меня есть только две вкладки, и я храню процедуры, относящиеся к обеим вкладкам (обработчикам кнопок и т. Д.), В коде основной формы, так что это выглядит так:

public partial class MainForm : Form
{
    // ----------TAB1-----------
    tab1SearchButtonCLick() {...}
    tab1AddButtonCLick() {...}
    // ----------TAB2-----------
    tab2EditButtonCLick() {...}
    tab2SearchButtonCLick() {...}
    tab2ClearButtonCLick() {...}
}

Теперь это не проблемас таким небольшим количеством кода, но он может быть один в будущем.Это приемлемый способ сделать это?Какая альтернатива?Я полагаю, что мог бы поместить вкладки в их собственные классы, но я не уверен, как именно я собираюсь это делать (в каждой вкладке много элементов управления, которые я должен был бы передать в качестве аргументов конструкторам).

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

Вы должны переместить содержимое каждой вкладки в отдельный UserControl.

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

0 голосов
/ 11 марта 2011

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

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

Если вы заметите, что Form генерируется какpartial class от Visual studio.
Это потому, что код проекта создается в отдельном файле.
Вы можете сделать это самостоятельно, объявив другие части класса как partial в других файлах.

Подробнее о частичное в эта ссылка

...