2011-04-11 88 views
7

我希望能够设计一些东西类似当你在Visual Studio中遇到一个异常时,你会看到一个窗口,这个窗口有一条连接窗口和代码窗口中某一点的线。我已经包括这个下面的图片:如何创建一个箭头指向另一个窗口的窗口?

Example

我注意到,每当代码窗口失去焦点,除了窗口消失。但是,当我专注时,我可以移动窗口,箭头继续指向目标。

这是怎么做的?具体来说,我怎样才能从一个窗口画线到另一个窗口

我使用C#编码并使用Windows窗体。

回答

4

在你的例子中,如果文本框失去焦点,有例外的窗口不会总是消失!

通过调查一下Spy ++工具(将查找窗口光标准确地放在行上),您会发现在黄色文本和异常窗口之间看到的那一行包含在一个窗口中(透明背景)(在VS 2010中有类型为“WindowsForms10.Window.8.app.0.34f5582_r41_ad1”的类窗口)。此窗口也具有WS_POPUP样式,并且是该行的确切边界框(其大小和位置完全符合该行)。

所以,你可以做同样的事情:建立一个透明的弹出窗口,使该行出现你想要的控件之间画上一条线,并设置其位置和大小。

+0

这使得从Windows API角度看,最感。另外,巨大的投资igative技术! – 2011-04-11 15:36:10

2

我不知道它究竟是如何做到的,但你可以做这样的想法类似的东西。

  1. 创建一个新的形式
  2. 超越控制所以它不是绘制
  3. 画从一个角落到另一个行(这可能取决于线路的方向
  4. 大小不一,定位Paint事件形式太行的两个点之间运行。
  5. 上关注部分还不太清楚!
+0

这与Andrei的解决方案基本相同。重点不是什么问题,但是我注意到了这一点,并且认为我应该提及它。 – 2011-04-11 15:47:46

+0

@damn - 他必须输入速度比我 – WraithNath 2011-04-11 15:49:01

+0

他也得到点使用间谍++;) – 2011-04-11 15:53:04

相关问题