As Slacker said, search for custom controls.
-
If your needs are simple you can try doing something like creating some "template child windows" using existing controls instead of handling paint events.
Let's say, each "box" could be like this:
_______________________
| |
| Title |
|_______________________|
| |
| * Text |
| |
| [] Other |
| |---Paragraph::Source |
| |---Info::Images |
| |
|_______________________|
The box can be any "window container", also it can be a MDI Child Window, so you can move, have a title, maximize, minimize or close the window (you can even replace these events with something you like, for example: minimize would show only title bar instead of minimizing or close event to remove all connections) and move events and so.
For the Items part you could use something like a Tree View Control.
Now, for the lines you could paint it in a way it stays above all windows or use a control with transparent background and draw the line on it and keep it on foreground, you'll end up creating a custom control for it. Or you can think in another way of representing the "linking indicator" like changing the icon of Item to something representing the link or the target window icon and show the "link target" on child items of that Item inside the Tree View like in the example above.