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, 3882 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
Peripheriegeräte
Unterschrank für HP Drucker
Tipp von NixVerstehen vor 1 TagPeripheriegeräte2 Kommentare

Als kurzen Freitags-Tipp möchte ich gerne meinen neuen Drucker-Unterschrank Modell Amica KS 15423W vorstellen. Das Gerät eignet sich hervorragend ...

Windows 10
Windows 10 - Probleme mit Point-And-Print
Tipp von emeriks vor 2 TagenWindows 103 Kommentare

Hi, wir kämpfen z.Z. mit einigen Druckertreibern, welche unter Win10 beim Verbinden eines Druckers von Printserver mit dem Dialog ...

Windows 10

Windows 10 1803 - Ihr Roamingbenutzerprofil wurde nicht vollständig synchronisiert

Anleitung von Deepsys vor 2 TagenWindows 101 Kommentar

Bei allen Windows 10 1803 PCs traten Probleme mit den Servergespeicherten Profilen auf. Das Abmelden dauerte sehr lange und ...

Exchange Server
Exchange - Fehler mit 2018-07 Sicherheitsupdate
Tipp von ArnoNymous vor 4 TagenExchange Server7 Kommentare

Hallo, es gibt mal wieder Freude mit den MS-Updates. KB4338814 führt dazu, dass der Exchange keine Mails mehr zustellt. ...

Heiß diskutierte Inhalte
Humor (lol)
Freitagsfrage: Was tun, wenn der Admin der DAU ist?
gelöst Frage von VoiperHumor (lol)32 Kommentare

Moin Zusammen, Eine nicht ganz ernst gemeinte Frage an die Außendienstler unter uns. Zusammenfassung: Ein Inhouse Admin ruft bei ...

Windows Netzwerk
LTE Modul - Kein Internet trotz Verbindung
Frage von killtecWindows Netzwerk19 Kommentare

Hallo, ich habe hier ein Dell 7390 2-in-1 mit W10 Pro wo ich nachträglich eine LTE-Karte (Original Dell DW5811e ...

LAN, WAN, Wireless
HP Probook 470 G4 - abbrechende Downloads
Frage von joern1LAN, WAN, Wireless19 Kommentare

Folgendes Problem, für einen Tipp wäre ich dankbar: Bei WLAN-Verbindung zum Internet (nicht LAN) kommt es bei etwas größeren ...

Router & Routing
Routing Problem mit Kaskade FritzBox und pfsense zugeriff nur von der firewall auf die clients und 0.0.0.0
Frage von ukl1967Router & Routing18 Kommentare

Hallo, ich habe ein an sich triviales Problem elches ich allerdings nicht gelöst bekomme. NAS 10.5.10.53 Mein Netz baut ...