Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Eventhandling bei deaktivierten Controls

Mitglied: misterdemeanor

misterdemeanor (Level 1) - Jetzt verbinden

17.04.2006, aktualisiert 19.04.2006, 3891 Aufrufe, 1 Kommentar

Windows Forms
.Net 2
Visual Basic 2005

Grützi,

das Problem an sich : Deaktivierte Steuerelemente feuern keine Ereignisse.

Weiß jemand wie man mit einem "Workaround" trotzdem auf die Ereignisse reagieren kann?

Zur Zeit versuche ich da in Richtung des Parents und dem überschreiben dessen Ereignisse an eine Lösung zu kommen, da aber Frischling in VB8...

Im konkreten Fall bei mir geht es darum "eigene" ToolTips auch auf deaktivierten ToolStripItems anzeigen zu können. Sind Sie aktiviert gibt es da keine Probleme ---> MouseEnter-Event...

Eine harte Nuss *gg*

Grüße
Felix
Mitglied: misterdemeanor
19.04.2006 um 15:39 Uhr
So, ich habe es jetzt wie folgt gelöst:

1)Eine Klasse erstellt die von ToolStrip abgeleitet ist.
2)Im Konstruktor wird der zu erstellenden Instanz mittels SetStyle die Eigenschaft EnableNotifyMessage zugeteilt.
2)Die Methode OnNotifyMessage überschrieben.

Nun kann ich in der Sub OnNotifyMessage die Messages direkt von Windows auswerten. Beim WM_MOUSEOVER schaue ich ob /unter den Koordinaten/ (wird der Sub als Parameter übergeben) sich ein /ToolStripItem/ befindet (Mittels GetItemAt(x,y) ).

Somit kann ich auch auf deaktivierten /ToolStripItems/ einen ToolTip anzeigen. Das wiederum auch nur indirekt, da ToolTips /nur/ auf von Windows.Forms.Control - abgeleitete Klassen angezeigt werden (Show und SetToolTip erwarten entsprechendes Argument).

Also hole ich mir mittels den Eigenschaften aus der Bounds-Property des /ToolStripItems/ dessen /Location/ innerhalb seines Containers (dem /ToolStrip/) und rufe die entsprechende Show-Methode des ToolTips auf.

Problem gelöst.

Die Klasse cusToolStrip:
01.
Public Class cusToolStrip 
02.
  Inherits Windows.Forms.ToolStrip 
03.
 
04.
  Const WM_MOUSEOVER = 512 
05.
  Private m_totInstance As New ToolTip 
06.
  Private m_shownToolTip4ItemName As String 
07.
  Private m_ToolTipSettings As List(Of ToolTipSetting) 
08.
  Private SHOWCUSTOMTOOLTIPS As Boolean 
09.
 
10.
  Public Sub New() 
11.
    MyBase.New() 
12.
    Me.SetStyle(ControlStyles.EnableNotifyMessage, True) 
13.
    Me.m_totInstance.Active = False 
14.
    Me.ToolTipSettings = New List(Of ToolTipSetting) 
15.
  End Sub 
16.
 
17.
  Public Property ToolTipSettings() As List(Of ToolTipSetting) 
18.
    Get 
19.
      Return Me.m_ToolTipSettings 
20.
    End Get 
21.
    Set(ByVal value As List(Of ToolTipSetting)) 
22.
      Me.m_ToolTipSettings = value 
23.
    End Set 
24.
  End Property 
25.
 
26.
  Protected Overrides Sub OnNotifyMessage(ByVal m As System.Windows.Forms.Message) 
27.
    Dim tstItem As ToolStripItem 
28.
    Dim x As Integer 
29.
    Dim y As Integer 
30.
    Select Case m.Msg 
31.
      Case WM_MOUSEOVER 
32.
        x = GetHiWord(m.LParam.ToInt64) 
33.
        y = GetLoWord(m.LParam.ToInt64) 
34.
        tstItem = Me.GetItemAt(x, y) 
35.
        If IsNothing(tstItem) Then 
36.
          m_totInstance.Active = False 
37.
          m_shownToolTip4ItemName = String.Empty 
38.
          Exit Sub 
39.
        End If 
40.
        If tstItem.Name = m_shownToolTip4ItemName Then Exit Sub 
41.
        ShowToolTip4Item(tstItem) 
42.
    End Select 
43.
  End Sub 
44.
 
45.
  Private Sub ShowToolTip4Item(ByRef tstItem As ToolStripItem) 
46.
    Dim mes As String = ToolTipSettings.Item(tstItem.Tag).Message 
47.
      m_totInstance.Active = True 
48.
      m_totInstance.ToolTipTitle = ToolTipSettings.Item(tstItem.Tag).Title 
49.
      m_totInstance.ToolTipIcon = ToolTipSettings.Item(tstItem.Tag).Icon 
50.
      m_totInstance.IsBalloon = ToolTipSettings.Item(tstItem.Tag).IsBaloon 
51.
      Dim x = tstItem.Bounds.Left + CInt(tstItem.Width / 1.5) 
52.
      Dim y = CInt(tstItem.Height / 2) 
53.
      m_totInstance.Show(mes, tstItem.GetCurrentParent, x, y, ToolTipSettings(tstItem.Tag).Duration) 
54.
      m_shownToolTip4ItemName = tstItem.Name 
55.
  End Sub 
56.
 
57.
  Public Function GetLoWord(ByVal l As Long) As Integer 
58.
      Return ((l / &H10000) And &HFFFF&) 
59.
  End Function 
60.
 
61.
  Public Function GetHiWord(ByVal l As Long) As Integer 
62.
      Return (l And &HFFFF&) 
63.
  End Function 
64.
End Class
Falls sich wer wunderte was denn ToolTipSedtting ist :

01.
Public Class ToolTipSetting 
02.
  Inherits List(Of ToolTipSetting) 
03.
 
04.
  Private m_Title As String 
05.
  Private m_Message As String 
06.
  Private m_Icon As Windows.Forms.ToolTipIcon 
07.
  Private m_Duration As Integer 
08.
  Private m_IsBaloon As Boolean 
09.
 
10.
  Public Sub New(ByVal Title As String, ByVal Message As String, ByVal Icon As ToolTipIcon, ByVal Duration As Integer, ByVal IsBaloon As Boolean) 
11.
    m_Title = Title 
12.
    m_Message = Message 
13.
    m_Icon = Icon 
14.
    m_Duration = Duration 
15.
    m_IsBaloon = IsBaloon 
16.
  End Sub 
17.
 
18.
  Public Property Title() As String 
19.
    Get 
20.
      Return CStr(m_Title) 
21.
    End Get 
22.
    Set(ByVal value As String) 
23.
      m_Title = value 
24.
    End Set 
25.
  End Property 
26.
  Public Property Message() As String 
27.
    Get 
28.
      Return m_Message 
29.
    End Get 
30.
    Set(ByVal value As String) 
31.
      m_Message = value 
32.
    End Set 
33.
  End Property 
34.
  Public Property Icon() As ToolTipIcon 
35.
    Get 
36.
      Return m_Icon 
37.
    End Get 
38.
    Set(ByVal value As ToolTipIcon) 
39.
      m_Icon = value 
40.
    End Set 
41.
  End Property 
42.
  Public Property Duration() As Integer 
43.
    Get 
44.
      Return m_Duration 
45.
    End Get 
46.
    Set(ByVal value As Integer) 
47.
      m_Duration = value 
48.
    End Set 
49.
  End Property 
50.
  Public Property IsBaloon() As Boolean 
51.
    Get 
52.
      Return m_IsBaloon 
53.
    End Get 
54.
    Set(ByVal value As Boolean) 
55.
      m_IsBaloon = value 
56.
    End Set 
57.
  End Property 
58.
End Class
Zugegeben, das anzeigen der ToolTips hätte OOP-konform in den /Item/-Klassen stattfinden müssen, allerdings für alle /ToolStripItems/-Typen Klassen abzuleiten...? Für meine Problemstellung reicht das hier soweit aus.
Bitte warten ..
Ähnliche Inhalte
Debian

Unrecognized control: 1.3.6.1.4.1.4203.666.5.16

Frage von ckedingDebian

Hi, in meinem Log vom slapd erscheint ständig die folgende Meldung. slap_global_control: unrecognized control: 1.3.6.1.4.1.4203.666.5.16 Soweit ich raus bekommen ...

CPU, RAM, Mainboards

Sata Controler auf mainboard hinzufügen

gelöst Frage von ipconfigCPU, RAM, Mainboards13 Kommentare

Hallo, ich habe folgendes Mainboard: und möchte zwei weitere SATA-Anschlüße für zwei weitere interne Festplatten hinzufügen Vielen Dank für ...

Server-Hardware

Welchen RAID Controler? Welche Server Festplatten dazu?

Frage von Roberto-GServer-Hardware21 Kommentare

Hallo, und zwar, kurz und knapp. Ich benötige einen MS SQL Server. Die Hardware könnte diese sein : DELL ...

Visual Studio

VB.Net - Label-Control skalieren

gelöst Frage von emeriksVisual Studio8 Kommentare

Hi, kann man im Visual Studion ein Label-Control skalieren? Bsp.: Ich habe eine verfügbare Fläche, welches vollständig durch ein ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate
Meine Wissenssammlung zu Bitlocker
Erfahrungsbericht von DerWoWusste vor 2 StundenVerschlüsselung & Zertifikate

Die Motivation für diesen Beitrag waren die vielen Posts rund um dieses Thema, die deutlich machen, wie viele Einzelaspekte ...

E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 2 TagenE-Mail11 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 2 TagenHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 2 TagenSicherheits-Tools1 Kommentar

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Heiß diskutierte Inhalte
Tipps & Tricks
Nagstamon und PRTG Monitoring
Frage von Der.ITlerTipps & Tricks13 Kommentare

Hallo Ihr, heute am Sonntag bin ich mal früh aufgestanden um mich mit dem Problem von Gestern zu beschäftigen. ...

Datenschutz
Gilt ein Ransomware-Befall als Datenpanne nach DSGVO?
Frage von MOS6581Datenschutz11 Kommentare

Moin Kollegen, wenn sich jemand Ransomware einfängt und dadurch bspw. Kundendaten verschlüsselt werden; gilt dies dann als meldepflichtige Datenpanne ...

Windows 10
Windows 10 PC stürzt in letzter Zeit mit verschiedenen Fehlermeldungen ab (Bluescreen)
Frage von cyb012Windows 1010 Kommentare

Hallo zusammen, mein Rechner verabschiedet sich in letzter Zeit leider immer öfters. Meine Austattung, falls relevant: Arbeitsspeicher: 16GB G.Skill ...

Batch & Shell
Bestimmte Textpassagen via bat löschen
gelöst Frage von Grisu84Batch & Shell10 Kommentare

Hallo, ich habe eine txt-Datei, in welcher ich durch eine bat bestimmte Zeilen löschen möchte. So soll die Datei ...