如何创建一个箭头指向另一个窗口的窗口?

时间:2011-04-11 14:40:09

标签: c# winforms user-interface

我希望能够在Visual Studio中获得异常时设计类似的,这是一种窗口,其中一行将窗口连接到代码窗口中的一个点。我在下面列出了一张图片:

Example

我注意到,只要代码窗口失去焦点,异常窗口就会消失。但是,当聚焦时,我可以移动窗口,箭头继续指向目标。

这是怎么做到的?具体来说,如何从一个窗口绘制一条线到另一个窗口?

我正在使用C#进行编码并使用Windows窗体。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

我不确切知道它是如何完成的,但你可以用这个想法做类似的事情。

  1. 创建新表单
  2. 覆盖油漆事件,因此未绘制
  3. 从一个角落到另一个角落(这可能会有所不同,具体取决于线条的方向
  4. 调整表格的大小和位置,使线条在两点之间运行。
  5. 还不确定焦点部分!