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, 3936 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 ...

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 ...

Windows 7

Ereignisanzeige plötzlich deaktiviert

Frage von itazubiiWindows 72 Kommentare

Hallo liebe Community, als ich in der Ereignisanzeige unter meiner Windows 7 Maschine nach einem Fehler suchen wollte, konnte ...

Microsoft

PROBLEM: Navision 2009 OLE Control

gelöst Frage von cody1900Microsoft3 Kommentare

Hallo Zusammen, wir verwenden MS Navision in der Version 2009. Seit heute taucht bei uns ein Fehler auf (siehe ...

Neue Wissensbeiträge
Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 1 TagInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 2 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 4 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Sicherheit

Wikileaks-Gründer Julian Assange wurde festgenommen

Information von Frank vor 7 TagenSicherheit3 Kommentare

Wikileaks-Gründer Julian Assange wurde heute in London festgenommen. Die Botschaft Ecuadors, in der er seit sieben Jahren lebte, hat ...

Heiß diskutierte Inhalte
Tipps & Tricks
Verdammt voll erwischt
Frage von AlchimedesTipps & Tricks23 Kommentare

Folgende Mail habe ich auf meinem Freenet Account erhalten: Nun folgendes Problem: 1) Ich besuche Porno Seiten yep hat ...

Drucker und Scanner
Xerox 7328 muss jeden Tag neu installert werden
Frage von PN-SchrauberDrucker und Scanner20 Kommentare

hallo, ich habe in Problem mit einem unserer Drucker. Vorweg, die meisten unserer Netzwerkdrucker laufen über einen Druckserver, dieser ...

HTML
Google maps
Frage von jensgebkenHTML20 Kommentare

Hallo Gemeinschaft, hab mal ne Frage zu Maps - habe es hinbekommen, dass ich einen iframe link erstellen kann ...

Switche und Hubs
PC Verursach Probleme im Netzwerk
gelöst Frage von spoboeSwitche und Hubs16 Kommentare

Hallo zusammen, folgene Situation macht mich inzwischen ratlos: In unserem Betrieb ist ein Rechner über die Hausverkabelung an einem ...