Как я могу создать окно со стрелкой, указывающей на другое окно? - PullRequest
7 голосов
/ 11 апреля 2011

Я хотел бы иметь возможность проектировать что-то , похожее на то, что вы видите, когда получаете исключение в Visual Studio, своего рода окно с линией, соединяющей окно с точкой в ​​окне кода.Я включил изображение этого ниже:

Example

Я заметил, что всякий раз, когда окно кода теряет фокус, окно исключения исчезает.Когда я сфокусирован, я могу перемещать окно, и стрелка продолжает указывать на цель.

Как это делается?В частности, как я могу нарисовать линию из одного окна в другое ?

Я пишу на C # и использую Windows Forms.

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

В вашем примере окно с исключением не всегда исчезает, если текстовое поле теряет фокус!

Проведя небольшое исследование с помощью инструмента Spy ++ (поместите курсор окна поиска точно на линию),вы заметите, что строка, которую вы видите между желтым текстом и окном исключения, содержится в окне (с прозрачным фоном) (с окном класса типа «WindowsForms10.Window.8.app.0.34f5582_r41_ad1» в VS 2010),Это окно также имеет стиль WS_POPUP и является точным ограничивающим прямоугольником линии (его размер и положение точно соответствуют линии).

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

2 голосов
/ 11 апреля 2011

Я не знаю точно, как это сделать, но вы можете сделать что-то подобное с этой идеей.

  1. Создать новую форму
  2. Перекрыть событие рисования, чтобы оно не рисовалось
  3. Нарисуйте линию от одного угла к другому (это может варьироваться в зависимости от направления линии
  4. Размер и расположение формы, чтобы линия проходила между вашими двумя точками.
  5. Пока не уверен в фокусировке!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...