Gå til innhold

Anbefalte innlegg

Situasjonen er følgende:

 

Har en UserControl med en checkbox og en label. Jeg vil at denne UserControl skal skiftefarge BackColor når man klikker på den. Problemet er at denne UserControlen kun får med seg mouseclick når man klikker direkte på den. Med andre ord, ikke hvis en er uheldig å treffer noe areal som tilhører checkboxen eller labelen.

 

Skal det være sånn? Sendes ikke en museklikkevent nedover i lagene liksom? Må en sette noen parametere for at det skal funke, eller er det bare sånn det er?

 

Har foreløpig løst det ved gjøre følgende på checkbox og label i denne UserControl:

x.MouseClick +=new MouseEventHandler(x_MouseClick)

 

x_MouseClick ser slik ut:

		void x_MouseClick(object sender, MouseEventArgs e)
	{
		OnMouseClick(e);
	}

 

Fungerer jo forsåvidt, men ble litt frustrert og nysgjerrig... Noen som har peil, forklaring, etc?

Lenke til kommentar
Videoannonse
Annonse

ok. ja det kan forsåvidt hende når jeg tenker nærmere etter... dvs, egentlig ikke, for du skal jo få med denne sender. og den burde jo vært satt til den som ble trykket på på toppen. synes jeg i hvert fall!

 

da kunne man tatt

if(sender == this) // Gjør det vi trenger

 

eller no... jaja. uansett, så har jeg jo en løsning på problemet. og antar det da er eneste muligheten :)

Lenke til kommentar

Men det du er ute etter er kun hendig i akkurat ditt tilfelle.

 

Du kan eventuelt automatisere oppgaven ved å legge til dette i constrcutoren:

 

foreach(Control ctrl in Controls)
 ctrl.Click += x_MouseClick; // Aner ikke hva delegaten heter

 

Jeg husker ikke om en trengte delegates i Events eller ikke, og dessuten aner jeg ikke hvilken delegate som brukes på click. Men det spiller ingen rolle egentlig...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...