[c#]Set cursor for ToolStripStatusLabel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 25-08 21:23

Gwannoes

Solderen moet je leren

Topicstarter
Het volgende probleem:

Onderin mijn applicatie heb ik een StatusStrip met daarin een ToolStripStatusLabel. Wanneer er op dit statuslabel geklikt wordt, verschijnt er een venster.

Om de gebruiker duidelijk te maken dat er geklikt kan worden, wil ik de cursor veranderen als deze boven het statuslabel is.
Veel controls hebben hiervoor een Cursor property, maar ToolStripStatusLabel niet :?
Geen probleem dacht ik: Ik gebruik gewoon de MouseEnter en MouseLeave events, en verander daarin de cursor.

C#:
1
2
3
4
5
6
7
8
9
private void StatusLabel_MouseEnter(object sender, EventArgs e)
{
    Cursor.Current = Cursors.Hand;
}

private void StatusLabel_MouseLeave(object sender, EventArgs e)
{
    Cursor.Current = Cursors.Default;
}


Helaas werkt dat niet goed. Er is een smalle rand (1 pixel?) om het statuslabel heen waar de muis inderdaad een handje wordt, maar ga ik verder naar binnen, dan verandert hij weer in een pijltje. Het MouseLeave event wordt inderdaad afgevuurd (heb ik gezien toen ik er een breakpoint op zette.)

Speuren op internet levert niet veel op; het lijkt wel of niemand de cursor setten voor een ToolStripStatusLabel :?

Iemand enig idee hoe dit komt en/of hoe ik dit kan oplossen?

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Kun je geen transparant ander object er over heen leggen wat wel een cursor property heeft en die ook het click event aan koppelen? Ik ben niet zo heel erg thuis in C#, maar zoiets zou ik proberen denk ik :)

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Gwannoes schreef op donderdag 29 januari 2009 @ 11:12:
Speuren op internet levert niet veel op; het lijkt wel of niemand de cursor setten voor een ToolStripStatusLabel :?
Da's op zich vrij logisch. Labels zijn primair niet bedoeld om op te klikken. Daarvoor hebben we immers de button.

Maar volgens mij heb je in de MSDN niet helemaal gekeken wat de mogelijkheden zijn van een ToolStripStatusLabel, want anders was je vast wel de properties LinkBehavior en IsLink opgevallen. Daarmee kun je de tekst in het label als een link laten renderen en middels het click event daarop reageren.

[ Voor 2% gewijzigd door Niemand_Anders op 29-01-2009 11:27 . Reden: ToolstripStatusLabel ipv ToolStripLabel ]

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 25-08 21:23

Gwannoes

Solderen moet je leren

Topicstarter
Bram77 schreef op donderdag 29 januari 2009 @ 11:16:
Kun je geen transparant ander object er over heen leggen wat wel een cursor property heeft en die ook het click event aan koppelen? Ik ben niet zo heel erg thuis in C#, maar zoiets zou ik proberen denk ik :)
Hmm, vind ik niet zo'n fraaie oplossing, maar 't zou wel kunnen idd.
Niemand_Anders schreef op donderdag 29 januari 2009 @ 11:25:
[...]

Da's op zich vrij logisch. Labels zijn primair niet bedoeld om op te klikken. Daarvoor hebben we immers de button.

Maar volgens mij heb je in de MSDN niet helemaal gekeken wat de mogelijkheden zijn van een ToolStripStatusLabel, want anders was je vast wel de properties LinkBehavior en IsLink opgevallen. Daarmee kun je de tekst in het label als een link laten renderen en middels het click event daarop reageren.
Inderdaad, niet primair bedoeld om op te klikken; maar ze hebben nou eenmaal een Click event, en in dit geval vindt ik het niet zo logisch om een button te plaatsen.

Die IsLink property heb ik wel gezien ja, maar daarvan wordt je text echt een link, en dat is niet m'n bedoeling.
Hey, ik kan natuurlijk gewoon m'n LinkColor op zwart zetten, en LinkBehaviour op NeverUnderline, en dan heb ik hetzelfde effect!
Dank _/-\o_

Problem solved for me.
Alhoewel ik nog steeds niet snap waarom die MouseLeave event wordt gefired!

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Je moet het ToolStripStatusLabel control meer als een compositie zien.
De events die je afvangt zijn van het ToolStripItem control. "Binnen" het control zelf zit je op de ToolStripLabel.
Om een of andere reden heeft dat ding dat vage gedrag.
Dit is overigens een bug waar een meer Controls die erven van ToolStripItem last van hebben.http://msdn.microsoft.com...toolstripstatuslabel.aspx

*zie Inheritance Hierarchy*

Acties:
  • 0 Henk 'm!

  • Gwannoes
  • Registratie: Juni 2002
  • Laatst online: 25-08 21:23

Gwannoes

Solderen moet je leren

Topicstarter
D-Raven schreef op donderdag 29 januari 2009 @ 16:16:
Je moet het ToolStripStatusLabel control meer als een compositie zien.
De events die je afvangt zijn van het ToolStripItem control. "Binnen" het control zelf zit je op de ToolStripLabel.
Om een of andere reden heeft dat ding dat vage gedrag.
Dit is overigens een bug waar een meer Controls die erven van ToolStripItem last van hebben.http://msdn.microsoft.com...toolstripstatuslabel.aspx

*zie Inheritance Hierarchy*
Aha, da's interessante info.
Je noemt het een bug... maar noemt Microsoft het ook een bug? Valt het te verwachten dat het een keer gefixt wordt?

Hmmz, hier komt dus m'n sig


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Het gaat niet gefixed worden want WinForms is min of meer 'depricated'. WPF is de toekomst en zit veel beter in elkaar. Zo heeft het WPF label ook geen controls collectie meer om maar iets te noemen.

Overigens heeft elk zichtbaar element een click event, hoe wou je anders drag & drop implementeren? En ik heb ook eerlijk gezegd een status label misbruikt als een statebutton

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Een click event wel maar daar hebben we t dan ook niet over.

Ik noem het inderdaad een bug want op een andere manier kan ik er niet tegenaan kijken.
Pagina: 1