Реализация графического интерфейса «Отношения» в стиле MS Access - PullRequest
2 голосов
/ 22 апреля 2009

Я понятия не имею, как правильно назвать этот стиль пользовательского интерфейса. В MS Access инструмент «отношения» показывает таблицы БД в виде маленьких подвижных блоков, которые можно связать линиями. То же самое можно сказать о Visio и нескольких аудио-приложениях - окнах, которые можно перемещать, содержащие строки текста, которые могут быть объединены осмысленным образом.

Как я могу создать похожую вещь в .NET, используя Visual Studio 2008 и C #? Я никогда раньше не создавал свои собственные элементы управления.

Вот изображение, которое я имею в виду: Нажмите, например,

Ответы [ 2 ]

1 голос
/ 25 мая 2009

Вам понадобятся два основных пользовательских элемента управления: главный вид и настольный элемент управления .

Элемент управления таблицы отвечает за рисование всех своих столбцов и обеспечивает возможность прокрутки элемента в случае необходимости. Он также отвечает за предоставление координаты x / y для указанного заголовка строки. Это делается для того, чтобы линии отношений могли соответствовать правильной строке.

Главное представление отвечает за принятие списка объектов таблицы (хранящегося в пользовательском объекте таблицы), создание того же числа элементов управления таблицей и размещение их в указанном порядке. Он также отвечает за рисование линий между элементами управления таблицей.

В общем, это не тривиально. Вы захотите переопределить метод OnPaint () обоих этих элементов управления, чтобы выполнить весь этот пользовательский рисунок. Проведите некоторое исследование графических процедур GDI +, чтобы выяснить, какие методы вы можете использовать, чтобы нарисовать это. Вы, вероятно, будете использовать эти объекты / методы чаще всего:

Pen
SolidBrush
LinearGradientBrush
DrawRectangle()
FillRectangle()
DrawString()
DrawImage()
DrawLine()
DrawPath()

Вам также понадобится перехватывать все виды событий мыши, чтобы можно было перемещать элементы управления. Это может быть сделано путем переопределения методов, таких как OnMouseDown или OnMouseMove.

Удачи.

0 голосов
/ 27 мая 2011

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

То, что вы пытаетесь сделать, довольно сложно.

Вот несколько ссылок, которые могут помочь. Все это инструменты UML с открытым исходным кодом, которые создают диаграммы.

http://imar.spaanjaars.com/501/automatically-generating-class-diagrams-from-a-type-using-reflection

http://www.codebydesign.com/

http://sourceforge.net/projects/use-case-maker/

http://projects.gnome.org/dia/

http://www.monouml.org/doku.php?id=documentation

...