Plovouci Panel   zodpovězená otázka

VB.NET, WinForms

Dobry den jde nejakym zpusobem udelat plovouci panel? Jako ze pri behu aplikace s nim muzete pohybovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejjednodušší by bylo vytvořit plovoucí okno nastavením Form.FormBorderStyle = FormBorderStyle.FixedToolWindow. Alternativní řešení by bylo použít komponentu DockPanel Suite která umožňuje vytvořit uživatelské rozhraní ve stylu Visual Studio 2005 včetně plovoucích a dokovatelných panelů. Pro začátečníky asi nic jednoduchého. Ta komponenta je zdarma včetně zdrojového kódu v C#.

http://sourceforge.net/projects/dockpane...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud plovoucí po celé obrazovce, tak formulář. Pokud prvek Panel plovoucí uvnitř formuláře, tak třeba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Public Class Form1
  Private mysiPosun As Point
 
  Private Sub Form1_Load(ByVal sender As System.Object, _
      ByVal e As  System.EventArgs) Handles MyBase.Load
    Panel1.Anchor = AnchorStyles.None
    Panel1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
  End Sub
 
 Private Sub Panel1_MouseDown(ByVal sender As Object, _
      ByVal e As System.Windows.Forms.MouseEventArgs) _
      Handles Panel1.MouseDown
    mysiPosun = New Point(-e.X - Me.Left, -e.Y - Me.Top - 30)
  End Sub
 
  Private Sub Panel1_MouseMove(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.MouseEventArgs) _
     Handles Panel1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
      Dim pnl As Panel = sender
      Dim mousePos As Point = Control.MousePosition
      mousePos.Offset(mysiPosun.X, mysiPosun.Y)
      pnl.Location = mousePos
    End If
  End Sub
 
  Private Sub OpravPolohuPanelu()
    If Panel1.Left > Me.Width - 20 Then Panel1.Left = Me.Width - 20
    If Panel1.Top > Me.Height - 50 Then Panel1.Top = Me.Height - 50
    If Panel1.Left < -Panel1.Width + 10 Then Panel1.Left = -Panel1.Width + 20
    If Panel1.Top < -Panel1.Height + 10 Then Panel1.Top = -Panel1.Height + 20
  End Sub
 
  Private Sub Panel1_MouseUp(ByVal sender As Object, _
      ByVal e As System.Windows.Forms.MouseEventArgs) _
      Handles Panel1.MouseUp
    OpravPolohuPanelu()
  End Sub
 
  Private Sub Form1_SizeChanged(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Me.SizeChanged
    OpravPolohuPanelu()
  End Sub
 
End Class

S komentáři viz snippety:

http://vbnet.cz/snippet--10-jak_umoznit_...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dekuji funguje super.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback