| |

VB.NET - Ein- und UmsteigerNotifyIcon mit MouseOver um eine Form als Info anzuzeigen | |  | Autor: Dierk | Datum: 08.03.09 01:57 |
| Hallo.
Ich möchte bei einer Anwendung viel mehr Infos anzeigen, als beim NotifyIcon
anscheinend möglich sind.
z.b. eine Progressbar und ein Bild + Text.
Leider habe ich keine Möglichkeit gefunden, eine kleine Form mit dem NotifyIcon
oder dergleichen anzuzeigen.
Deshalb habe ich mir jetzt selber etwas geschrieben.
Das funktioniert sogar ganz gut, nur werde ich das Gefühl nicht los
viel zu viel Aufwand dafür verwendet zu haben.
Es wäre nett, wenn ihr mir sagen könntet ob und wie es besser(einfacher) geht.
Hier mal mein Code:
Form1
Public Class Form1
'Eckdaten des NotifyIcons
Private NotifyIcon_Left As Integer
Private NotifyIcon_Right As Integer
Private NotifyIcon_Bottom As Integer
Private NotifyIcon_Top As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
NotifyIcon_Left = 30000 'Sollte nur außerhalb der
' möglichen Auflösung sein
NotifyIcon_Bottom = 0
NotifyIcon_Right = 0
NotifyIcon_Top = 30000 'Sollte nur außerhalb der
' möglichen Auflösung sein
NotifyIcon1.Icon = New System.Drawing.Icon("C:\Icon1.ico")
NotifyIcon1.Text = "MouseOver"
NotifyIcon1.Visible = True
Timer1.Enabled = True
End Sub
Private Sub NotifyIcon_CreateMouseOver(ByVal x As Integer, ByVal y As _
Integer)
'Die Position des Icons einlesen
'Beim ersten Durchlauf
If x < NotifyIcon_Left Then
NotifyIcon_Left = x
'Falls das Icon durch andere nach links verschoben wird
ElseIf x < NotifyIcon_Left And NotifyIcon_Left - 17 > x Then
NotifyIcon_Left = x
'Falls das Icon durch andere nach rechts verschoben wird
ElseIf x > NotifyIcon_Left And NotifyIcon_Left + 17 < x Then
NotifyIcon_Left = x
End If
If x > NotifyIcon_Right Then
NotifyIcon_Right = x
ElseIf x > NotifyIcon_Right And NotifyIcon_Right + 17 < x Then
NotifyIcon_Right = x
ElseIf x < NotifyIcon_Right And NotifyIcon_Right - 17 > x Then
NotifyIcon_Right = x
End If
'Hier kann nichts verschoben werden
If y <= NotifyIcon_Top Then NotifyIcon_Top = y
If y >= NotifyIcon_Bottom Then NotifyIcon_Bottom = y
End Sub
Private Function NotifyIcon_MouseOver(ByVal x As Integer, ByVal y As _
Integer) As Boolean
'Abfragen ob die Maus beim MouseMove im IconBereich ist
If x > NotifyIcon_Left And x < NotifyIcon_Right And _
y < NotifyIcon_Bottom And y > NotifyIcon_Top Then
NotifyIcon_MouseOver = True
Else
NotifyIcon_MouseOver = False
End If
End Function
Private Sub NotifyIcon1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseMove
'Die Aktuelle Mausposition an CreateMouseOver senden
NotifyIcon_CreateMouseOver(Cursor.Position.X, Cursor.Position.Y)
End Sub
Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
'Beinem Mausklick, soll das Fenster sichtbar bleiben
Form2.Show()
'dazu den Timer abschalten (wird beim beenden von Form2 wieder
' eingeschaltet)
Timer1.Enabled = False
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Timer1.Tick
'Solange der Timer läuft, wird das Fenster beim MouseOver angezeigt
If NotifyIcon_MouseOver(Cursor.Position.X, Cursor.Position.Y) = True _
Then
Form2.Show()
Else
Form2.Hide()
End If
End Sub
End Class Form2
Public Class Form2
'Damit andere Anwendungen, die evtl. den Fokus haben müssen
'nicht gestört werden, das Fenster ohne Fokus anzeigen
Protected Overrides ReadOnly Property ShowWithoutActivation() As Boolean
Get
Return True
End Get
End Property
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Me.Height = 150
Me.Width = 250
'Das Fenster nicht in der Taskbar anzeigen
Me.ShowInTaskbar = False
'Und Unten Rechts über der Taskleiste anzeigen
Me.Top = My.Computer.Screen.WorkingArea.Height - Me.Height
Me.Left = My.Computer.Screen.WorkingArea.Width - Me.Width
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'Den Timer wieder einschalten, damit NotifyIconMouseOver wieder klappt
Form1.Timer1.Enabled = True
End Sub
End Class Danke Dierk |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|