Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
11 / 11 / 0
Регистрация: 20.01.2018
Сообщений: 70
1

Можно ли таким образом спроектировать интерфейс?

27.08.2018, 14:46. Просмотров 444. Ответов 7
Метки нет (Все метки)

Есть задача, которая имеет такой интерфейс:
Можно ли таким образом спроектировать интерфейс?

Т.е. есть главный модуль (на картинке представлен нижним окном). В главном модуле есть меню и элемент TabControl. Пользователь в меню выбирает нужный модуль, динамически создается новая закладка, из dll-ки загружается соответствующий модуль и отображается на закладке. Модуль представляет из себя, в общем случае, список, из которого могут открываться модальные окна (добавить запись, изменить запись, фильтр на записи и т.д.)

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

Проблема заключается в том, что когда вызвано модальное окно (как на картинке) вкладки становятся недоступными. Это с одной стороны логично (что бы пользователь не мог работать со списком клиентов), а с другой стороны не удобно т.к. пользователь не может работать с вкладкой Счета клиентов. Хотелось что бы пользователь мог открыть в "Списке клиентов" модальное окно и в "Счетах клиентов" свое модальное окно.

Пробовал создавать каждую закладку в отдельном процессе - ничего не получилось, все работает точно так же.

Нужный эффект достигается, если запускать каждый модуль в отдельном окне и отдельном потоке. В этом случае доступны сразу 3 модуля главный и два дочерних. И в дочерних модальные окна открываются как надо. Только дочерние модули ведут себя как отдельные приложения и разбегаются как тараканы по всему компьютеру. И главное окно закрывает собой дочерние.
Можно ли таким образом спроектировать интерфейс?


Может кто-то знает, как решить задачу. Может не с помощью закладок а как-то иначе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2018, 14:46
Ответы с готовыми решениями:

Можно ли таким образом защитить программу
Допустим, известны основные утилиты и программы для взлома c#. Во время работы нашей программы...

Можно ли записать множество таким образом?
Есть множество X = { -5,-4,-3,-2,-1,1,2,3,4,5 }. Это правильно записать его так, как показано ниже,...

Можно ли осуществить сдвиг таким образом?
Инициализируем переменную: unsigned char a=0b00000000; далее осуществим сдвиг: a=1<<2; результат...

Можно ли таким образом написать запрос?
$query = "SELECT * FROM cars WHERE id='"; $query .= '<script language="javascript">'; $query .=...

7
0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 14
27.08.2018, 17:31 2
_Ramzay, вкладки скорее всего становятся не доступными т.к. открытие идёт через wnd.ShowModal(), соответственно если использовать wnd.Show(), то вкладки будут доступны. Но тогда и подход к редактированию уже нужен другой будет.
0
Эксперт .NET
6849 / 4456 / 1068
Регистрация: 25.05.2015
Сообщений: 13,623
Записей в блоге: 13
27.08.2018, 17:39 3
Я это обошёл заменой модальных окон на вложенные контролы. Как вкладки у браузера, каждая из которых сама по себе может переключаться вперёд (показ нового контрола) и назад (возврат на предыдущий).
0
906 / 809 / 208
Регистрация: 15.06.2012
Сообщений: 3,186
Записей в блоге: 1
27.08.2018, 18:30 4

Не по теме:

Млин, "клиентуру" можно бьіло бьі и затереть, а то так и просится постебатся XD



Вообще немного странная сама бизнес логика:
-- если открьіт клиент на редактирование, то возможно и тут же нужно подтягивать его счета.
-- если же нужно смотреть и стороние счета, то только пляска с контролами вместо окон.
-- можно еще выкрутится так: открьівать диалоговое окно как немодальное, но саму гриду лочить на любьіе действия. Т.е. доступ к главное форме будет оставатся.
0
11 / 11 / 0
Регистрация: 20.01.2018
Сообщений: 70
27.08.2018, 21:24  [ТС] 5
Цитата Сообщение от maslo2015 Посмотреть сообщение
если использовать wnd.Show(), то вкладки будут доступны
Вкладки создаются и отображаются так:
C#
1
2
3
// tcTask это элемент типа TabControl
tcTask.TabPages.Add(app.Code, app.Name);                          // Добавляем вкладку
tcTask.SelectedTab = tcTask.TabPages[tcTask.TabPages.Count - 1];
Как применить wnd.Show()?

Добавлено через 4 минуты
Цитата Сообщение от Rius Посмотреть сообщение
Я это обошёл заменой модальных окон на вложенные контролы. Как вкладки у браузера, каждая из которых сама по себе может переключаться вперёд (показ нового контрола) и назад (возврат на предыдущий).
Не совсем понятно. Если можно, картинку в студию. В качества контрола использовал что, панель с гридом и кнопками вызова модальных окон?

Добавлено через 8 минут
Цитата Сообщение от Wolfdp Посмотреть сообщение
Вообще немного странная сама бизнес логика:
Согласен. Вопрос такого интерфейса спорный. Есть и другие побочные эффекты, например при открытии записи на редактирование происходит ее блокировка. После этого можно перейти на вкладку №2 и забыть про все. Соответственно другой пользователь не сможет редактировать эту запись. Но мне интересно найти решение задачи.
0
Эксперт .NET
6849 / 4456 / 1068
Регистрация: 25.05.2015
Сообщений: 13,623
Записей в блоге: 13
27.08.2018, 22:04 6
Цитата Сообщение от _Ramzay Посмотреть сообщение
Не совсем понятно. Если можно, картинку в студию. В качества контрола использовал что, панель с гридом и кнопками вызова модальных окон?
Узрите:
Прототип
0
906 / 809 / 208
Регистрация: 15.06.2012
Сообщений: 3,186
Записей в блоге: 1
28.08.2018, 07:53 7
Цитата Сообщение от _Ramzay Посмотреть сообщение
Как применить wnd.Show()?
никак, вам нужно выцеплять внутрености, и явно создавать их на вкладке. По идеи ваши модальньіе окна должньі оперировать своими внутреними контролами и моделями, от них и нужно плясать. Если у вас жесткая завязка данньіх на формах, то добро пожаловать в ад рефакторинга.

Цитата Сообщение от _Ramzay Посмотреть сообщение
Но мне интересно найти решение задачи.
Когда имеется лютый код, решение только одно. Любые правки лишь продлеваю агонию.
0
118 / 100 / 29
Регистрация: 17.03.2016
Сообщений: 435
Записей в блоге: 1
12.09.2018, 20:34 8
а что вам мешает просто заблокировать главное окно Enabled = false и все ввод не возможен пока не закроются все остальные окна

Добавлено через 1 минуту
печем можно блокировать только гридку а нужное оставлять
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2018, 20:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Можно ли сократить запись кода таким образом?
a=input() #из ' * *Hello *world ' делаю 'Hello, world' a.strip(' ') a=', '.join(a.split(' ')) ...

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

Можно ли в Lotus таким образом использовать таблицы-справочники?
Есть форма для заполнения сотрудников и поля - уникальный номер (peopleid), ФИО, должность и т.д....

Почему можно считать площадь астроиды таким образом
Подскажите, пожалуйста, почему можно считать площадь астроиды таким образом. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.