2013-05-23 2 views
0

Я создаю приложение с богатым пользовательским интерфейсом в формах C# (.net 4.5) для управления/отображения генеалогического древа. Я пробовал использовать многие уже доступные продукты. Но ни один из доступных бесплатных продуктов не имеет возможности отображать и печатать полное семейное дерево на экране. Поэтому я решил написать сам.Лучший компонент интерфейса C# для отображения сущностей и его связей

Теперь я решил использовать график для пользовательского интерфейса, и будет создан узел, изображающий каждого человека в базе данных. Я планирую проанализировать всю базу данных в шаге 1 и создать логический граф. Шаг 2 - отобразить логический граф с богатым пользовательским интерфейсом. Я планирую иметь простые функции, например, когда мы щелкаем правой кнопкой мыши по соответствующему узлу, мы должны получить возможность обновлять их информацию.

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

Спасибо заранее, S.Sudharsan

+0

забыть winforms. он не поддерживает графику. См. Мой [пример WPF] (http://stackoverflow.com/a/15821573/643085) того, что вам нужно. 'ContextMenus' и другие функции, которые вы упомянули, могут быть легко добавлены к этому образцу. –

ответ

0

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

0

У меня была такая же проблема некоторое время назад.

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

Если вы не хотите использовать какую-либо стороннюю структуру, вам следует провести некоторое исследование по планированию графа (особенно алгоритму Sugiyama).

+0

У меня нет никаких ограничений, чтобы не использовать сторонний компонент, если он решает мою цель. –

+0

Создал ли ваш собственный пользовательский элемент управления хорошо? В моем сценарии у меня будет около 150+ таких узлов, которые будут отображаться одновременно на экране. Так любопытно узнать о последствиях производительности при использовании такого мощного пользовательского контроля. –

+0

Ну, это всегда будет зависеть от вашей реализации. В моем случае результат был достаточно гладок. Но вы можете помнить некоторые вещи. - Вам вряд ли нужно будет отображать 150+ узлов одновременно. - Не забудьте приостановить и возобновить компоновку при редактировании узлов. - Утилизируйте свои пользовательские элементы управления, когда они не используются. – guanabara

Смежные вопросы