powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создать TabPage.
26 сообщений из 26, показаны все 2 страниц
Создать TabPage.
    #38707970
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть главная форма. На форме есть TabControl. Я хочу програмно добавить в этот TabControl TabPage. Это конечно не проблема, но добавить TabPage я хочу из другого класса а он этот TabControl не видит. Как это корректно сделать?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38707999
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сгенерировать некую команду в аргументах которой передать объект, данные которого должны быть отображены на TabPage.
Главная форма должна обработать эту команду и "предложить" TabControl-у отобразить полученный в аргументах объект.
TabControl отобразит объект созданием TabPage.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708004
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или главная форма может выступать простым диспетчером команды.
Типа спросит лежащие в ней контролы: А кто может отобразить вот этот объект?
А TabControl ответит: А я могу!

И отобразит
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708014
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAСгенерировать некую команду в аргументах которой передать объект, данные которого должны быть отображены на TabPage.
Главная форма должна обработать эту команду и "предложить" TabControl-у отобразить полученный в аргументах объект.
TabControl отобразит объект созданием TabPage.
Так это должен быть ивент, иначе как главная форма будет знать когда добавить новый пейдж?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708015
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, смотрите в сторону MVP и command routing в WinForms.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708021
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7skyANAСгенерировать некую команду в аргументах которой передать объект, данные которого должны быть отображены на TabPage.
Главная форма должна обработать эту команду и "предложить" TabControl-у отобразить полученный в аргументах объект.
TabControl отобразит объект созданием TabPage.
Так это должен быть ивент, иначе как главная форма будет знать когда добавить новый пейдж?Да, сделайте Event.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708027
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAjenya7пропущено...

Так это должен быть ивент, иначе как главная форма будет знать когда добавить новый пейдж?Да, сделайте Event.
То есть в классе я создаю глобальный ивент а главная форма скажем на загрузке подписывается на него?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708036
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7skyANAпропущено...
Да, сделайте Event.
То есть в классе я создаю глобальный ивент а главная форма скажем на загрузке подписывается на него?А что из себя представляет класс?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708045
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAjenya7пропущено...

То есть в классе я создаю глобальный ивент а главная форма скажем на загрузке подписывается на него?А что из себя представляет класс?
Управление. Тесты берутся по очереди и прогоняются. Но перед этим я хочу загрузить их визуально в лист, который расположиться на этом пейдже.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708071
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7skyANAпропущено...
А что из себя представляет класс?
Управление. Тесты берутся по очереди и прогоняются. Но перед этим я хочу загрузить их визуально в лист, который расположиться на этом пейдже.Я фиг что понял.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708118
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAjenya7пропущено...

Управление. Тесты берутся по очереди и прогоняются. Но перед этим я хочу загрузить их визуально в лист, который расположиться на этом пейдже.Я фиг что понял.
А что тут понимать? Создаем пэйдж, на него кидаем лист вью и пробегаемся по айтемам которые в лист вью. Но сначала надо создать пэйдж.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708143
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот скелет класса.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class Sequence
    {
        List<Test> Tests { get; set }

        public Sequence()
        {
        }

        public Sequence(List<Test> tests)
        {
            Tests = tests;
        }

        private Test.Result RunTest(Test test, ref string result)
        {

        }

        private void RunSequence(List<Test> tests)
        {
            if (!Globals.SequenceReadyForRun)
                return;
            
            CreateTab();

            LoadListView(tests);

            string data = "";
        
            foreach (Test test in tests)
            {
                RunTest(Test test, ref data);
                UpdateListView(test);
            }

        }
}


CreateTab(), UpdateListView(test) и LoadListView(tests) не реализованы.Это надо сделать в отдельном потоке. Вот сижу олову ломаю.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708174
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7skyANAпропущено...
Я фиг что понял.
А что тут понимать?Я Вам задал конкретный вопрос и из Вашего ответа не понял, что из себя представляет класс.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708181
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Вот скелет класса.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class Sequence
    {
        List<Test> Tests { get; set }

        public Sequence()
        {
        }

        public Sequence(List<Test> tests)
        {
            Tests = tests;
        }

        private Test.Result RunTest(Test test, ref string result)
        {

        }

        private void RunSequence(List<Test> tests)
        {
            if (!Globals.SequenceReadyForRun)
                return;
            
            CreateTab();

            LoadListView(tests);

            string data = "";
        
            foreach (Test test in tests)
            {
                RunTest(Test test, ref data);
                UpdateListView(test);
            }

        }
}


CreateTab(), UpdateListView(test) и LoadListView(tests) не реализованы.Это надо сделать в отдельном потоке. Вот сижу олову ломаю.ИМХО класс Sequence никакого отношения к UI не должен иметь. Некоторые тесты и в консоли могут запускаться.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708190
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тесты в консоли и запускаются но я хочу визуально показать информацию - этот тест прошел, этот упал, этот померял такую то величину тот другую ну и так далее.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708245
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7У меня есть главная форма. На форме есть TabControl
теперь делаете метод у главной формы:
Public TabPage AddTabPage()
{
var tp = new TabPage();
tabControl1.TabPages.Add(tp);

return tp;
}

и в своем классе обращаетесь mainForm.AddTabPage();
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708286
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79jenya7У меня есть главная форма. На форме есть TabControl
теперь делаете метод у главной формы:
Public TabPage AddTabPage()
{
var tp = new TabPage();
tabControl1.TabPages.Add(tp);

return tp;
}

и в своем классе обращаетесь mainForm.AddTabPage();
О! То что надо. А я смогу это сделать в другом потоке?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708300
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7А я смогу это сделать в другом потоке?
Я бы не советовал. Гемморой лишний.

А так для синхронизации есть же всякие backgroundworker-ы, Task + TaskScheduler.FromCurrentSynchronizationContext(), какая то ерунда через async/await тоже присутствует

Ваше будущее в ваших руках.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708302
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public TabPage AddTabPage()
{
var tp = new TabPage();
tabControl1.TabPages.Add(tp);

return tp;
}

и в своем классе обращаетесь mainForm.AddTabPage(); 



Неа, таб добавляется в экземпляре главной формы а не на самой форме.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708656
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Тесты в консоли и запускаются но я хочу визуально показать информацию - этот тест прошел, этот упал, этот померял такую то величину тот другую ну и так далее.Вы хотите написать свой Gallio Icarus? Дак посмотрите его исходники на GitHub

1. Класс Sequence ничего не должен знать о главной форме, TabControl-е и прочем UI;
2. Вместо вызова метода UpdateListView нужно генерировать некое событие StateChanged, на которое должен быть подписан UI.

Так Вы сможете запустить метод Run в отдельном потоке, а в основном реагировать на событие и обновлять интерфейс.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708693
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA1. Класс Sequence ничего не должен знать о главной форме, TabControl-е и прочем UI;


Так где же создавать TabPage???
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708715
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jenya7,
А ну понял - по ивенту.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708836
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, да не надо пока про ивенты думать.

Если я угадал с аналогом Gallio Icarus, то пользователь отмечает галками нужные тесты, формируется Sequence и его надо выполнить, так?
...
Рейтинг: 0 / 0
Создать TabPage.
    #38708896
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAjenya7, да не надо пока про ивенты думать.

Если я угадал с аналогом Gallio Icarus, то пользователь отмечает галками нужные тесты, формируется Sequence и его надо выполнить, так?
Это тесты железа - тестируется наружная система. Вообще то опцию отмечать галками я не делал. Загружается список тестов из файла и прогоняются по порядку. Что то вроде poor man TestStand.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38709102
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7skyANAjenya7, да не надо пока про ивенты думать.

Если я угадал с аналогом Gallio Icarus, то пользователь отмечает галками нужные тесты, формируется Sequence и его надо выполнить, так?
Это тесты железа - тестируется наружная система. Вообще то опцию отмечать галками я не делал. Загружается список тестов из файла и прогоняются по порядку. Что то вроде poor man TestStand.Я бы сделал как-то так:

1. В главной форме создал бы следующий метод:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
private void Open(Sequence sequence)
{
    TabPage tab = tabControl.TabPages.FirstOrDefault(p => sequence.Equals(p.Tag));

    if (tab != null)
    {
        tabControl.SelectTab(tab);
        return;
    }

    var view = new SequenceView(sequence);

    tab = new TabPage { Tag = sequence };
    tab.Controls.Add(view);

    tabControl.TabPages.Add(page);
    tabControl.SelectTab(tab);

    view.Dock = DockStyle.Fill;
}


2. Зарузил тесты из файла и сформировал Suquence;
3. Вызвал бы метод Open.

SequenceView - это UserControl, что умеет отображать объект Sequence и реагировать на изменение состояния последнего.
...
Рейтинг: 0 / 0
Создать TabPage.
    #38709535
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Я попробую.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создать TabPage.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]