Autor |
Beitrag |
Palladin007
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mo 08.07.13 19:41
Moin,
ich weiß nicht, ob die Frage trivial ist, oder nicht, aber ich habe selber nichts über Google gefunden, oder bin zu doof dafür. Und ich bin auch langsam etwas unter Zeitdruck, daher frage ich einfach mal hier.
Und zwar suche ich Events, die abfangen, wann ein Control selektiert und deselektiert wird.
Der Sinn darin ist ganz einfach:
Ich habe eine TextBox für einen Dateipfad und wenn diese Box leer und nicht selektiert ist, soll ein kurzer Text in Grau da drin stehen. Wird die selektiert, verschwindet der Text, wird sie wieder deselektiert, wird der Text wieder angezeigt.
Weiß jemand, wie ich so ein Event finde, oder zuverlässig selber bauen kann, oder kennt jemand eine elegantere Lösung?
Gruß
Edit:
Ich brauch das immer, wenn das Control selektiert wird, also bei der Tab-Taste, der Maus, der Select-Methode und was es noch so gibt.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 08.07.13 19:54
In Delphi heißt das OnEnter und OnExit, ich vermute das ist bei C# ähnlich...
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.07.13 20:13
In .NET heißt es Enter und Leave.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 08.07.13 20:14
Entweder das Enter/Leave oder GotFocus/LostFocus Event Paar.
Wenn du das nicht auch in XP brauchst ist das Feature übrigens schon in den Common Controls enthalten. Such mal nach CueBanner (genauer nach der EM_SETCUEBANNER Windows Message) da solltest du einige fertige Implementierungen für Winforms finden.
|
|
Palladin007 
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mo 08.07.13 20:32
Ich hab jetzt erst einmal Enter und Leave genommen, kam aber noch nicht dazu, das zu testen.
Sowas, wie Ralf Jansen es beschreibt, wäre natürlich klasse, zumindest, wenn ich es richtig verstanden habe, aber ich kann nicht einmal die fehlende Microsoft.SqlServer.Management.Controls.dll finden, die ist bei Verweisen weder unter .NET noch unter COM zu finden und daher kann ich auch die Klasse nicht nutzen.
Oder meinst du sowas:
eric.zarnosky.com/si...te-active-directory/
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 08.07.13 22:05
Zitat: | Sowas, wie Ralf Jansen es beschreibt, wäre natürlich klasse, zumindest, wenn ich es richtig verstanden habe, aber ich kann nicht einmal die fehlende Microsoft.SqlServer.Management.Controls.dll finden, die ist bei Verweisen weder unter .NET noch unter COM zu finden und daher kann ich auch die Klasse nicht nutzen. |
Häh??
Siehe z.B. das hier. Die erste Antwort.
|
|
Palladin007 
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Di 09.07.13 00:53
Sorry, aber ich raffs nicht
Weder die Klasse, noch wie man das benutzt.
Wenn ich das einfach so in meine Form einbaue, der Eigenschaft Cue irgendwas übergebe und dann teste, passiert nichts, ist ne ganz normale Textbox.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 09.07.13 06:02
Ich habe die verbesserte Lösung darunter benutzt:
stackoverflow.com/qu...orms/4902969#5450496
Das funktioniert problemlos, nur dass ich als Parameter 0 statt 1 übergebe, damit der Text nur angezeigt wird, wenn der User nicht den Fokus auf dem Control hat. Ein kleines Video liegt im Anhang, am Ende siehst du auch den Effekt kurz.
Einloggen, um Attachments anzusehen!
|
|
Palladin007 
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Di 09.07.13 10:54
Funktioniert nicht
Ich bekomme den Text zwar im Designer angezeigt (war vorher nicht so), allerdings passiert rein gar nichts, wenn ich dann Teste. Ich hatte das auch vorher wie im Video gemacht und jetzt wieder, aber wenn die CueTextBox den Fokus verliert, bleibt sie so, wie sie war.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Di 09.07.13 19:09
Hast du eventuell Application.EnableVisualStyles auskommentiert?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 09.07.13 19:25
Hast du vielleicht bei dir im System an den visuellen Einstellungen herumgespielt? Mit Standardeinstellungen funktioniert das von XP bis Windows 8 ohne Probleme.
Zeig doch mal einen Screenshot...
|
|
Palladin007 
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mi 10.07.13 01:18
Ach da haben wir ja das Problem, dank Ralf
Ein "Application.EnableVisualStyles" gab es nie, weil ich in einer Konsolen-Anwendung begonnen habe, da ich so leichter testen kann und noch keine Form hatte.
Habe mal die typischen Zeilen, die sonst in einer WinForms-Anwendung automatisch generiert werden, in die Main-Methode kopiert und jetzt funktioniert alles wunderbar, vielen Dank ^^
PS:
Natürlich auch großes Dankeschön an jaenicke für das Video ^^
Die kleine CueTextBox nehme ich in eine kleine Sammlung von Klassen auf, die ich immer wieder verwende, ich mag nämlich diese kleine Funktion, die sie erfüllt ^^
|
|
|