2011-04-11 16 views
7

benzeri benzeri bir şey, Visual Studio'da bir pencere, pencerede kod penceresindeki bir noktaya bağlayan bir satırı olan bir pencere, bir özel durum aldığınızda ne görmek için tasarım yapmak istiyorum. Aşağıda bunun bir resmini yer verdik:Başka bir pencereyi gösteren bir ok ile nasıl bir pencere oluşturabilirim?

Example

ben kod penceresi kaybettiğinde her odak fark, istisna penceresi kaybolur. Odaklandığında, pencereyi hareket ettirebilirim ve ok hedefe doğru işaret etmeye devam ediyor.

Bu nasıl yapılır? Spesifik olarak, Bir pencereden bir çizgi başka bir içine nasıl çizebilirim?

C# kodlu yazıyorum ve Windows Forms'u kullanıyorum.

cevap

4

Örneğinizde, metin kutusu odağı kaybederse istisna içeren pencere her zaman kaybolmayacaktır!

Spy ++ aracıyla biraz araştırdıktan sonra (bul penceresi imlecini tam olarak satırın üzerine getirin), sarı metinle istisna penceresi arasında gördüğünüz çizginin bir pencerede (saydam olarak) olduğunu fark edeceksiniz. arka plan) (Windows 2010'da "WindowsForms10.Window.8.app.0.34f5582_r41_ad1" türünde bir sınıf penceresiyle). Bu pencerede ayrıca WS_POPUP stili vardır ve çizginin tam sınırlayıcı kutusu (boyutu ve konumu tam olarak çizgiye sığar).

Aynı şeyi yapabilirsiniz: şeffaf bir açılır pencere oluştur, üzerine bir çizgi çiz ve konumunu ve boyutunu, satırın istediğin kontrollerin arasında görünmesini sağlayacak şekilde ayarla.

+0

Bu, bir Windows API açısından en mantıklı. Ayrıca, büyük yatırım Igatif teknik! –

2

Tam olarak nasıl yapıldığını bilmiyorum ama bu fikirle benzer bir şey yapabileceksiniz.

  1. yeni bir form
  2. başka bir köşesinden bir çizgi (bu
  3. Boyut hattı yönünde bağlı olarak değişebilir çizmek ve konumlandırmak çizilmemiştir onun böylece boya olayı overide
  4. oluştur çizgi böylece formu iki nokta arasında çalışır. henüz odak kısmında emin değil
  5. !
+0

Bu aslında Andrei'nin çözümü ile aynı. Odaklanma o kadar da önemli değil, ama fark ettiğim ve anladığım bir şeydi. –

+0

@damn - benden daha hızlı yazmış olmalı – WraithNath

+0

Ayrıca Spy ++ kullanmak için puan alır;) –

İlgili konular