2011-04-11 85 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

相關問題