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

Frage Entwicklung VB for Applications

Mitglied: misterdemeanor

misterdemeanor (Level 1) - Jetzt verbinden

17.04.2006, aktualisiert 19.04.2006, 3853 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
Exchange Server
Gerätereset kann nicht deaktiviert werden
gelöst Frage von Julian92Exchange Server4 Kommentare

Hallo zusammen, ich hab über den Exchange-Server zum Test mein Nokia Lumina 620 zurücksetzen lassen. Das funktionierte ohne Probleme. ...

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

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

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 10 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 14 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 14 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 17 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...