Håndtering af input i Windows forms
Hej,Jeg har et problem, som burde være banalt, men som ikke desto mindre driller mig en del.
Jeg er ved at lave en form for animationseditor i C#, og på min form har jeg en SplitContainer og endnu en SplitContainer ovenpå. Så har jeg et par ComboBoxes og en PictureBox, som er det område, hvorpå brugeren kan placere animationsobjekter og ændre dem. Det skal være muligt at klikke på et objekt og dermed vælge det og så bruge cursor-tasterne til at flytte det rundt med.
På min form har jeg sat this.KeyPreview = true og cursortast-håndteringen sker i min KeyPress event handler. Det virker også - sådan da! Det valgte objekt flytter sig godt nok MEN jeg kan konstatere, at en af mine SplitContainers også får tastetrykket. Hvis jeg trykker én gang på fx cursor left, så flytter SplitContaineren sig (altså den der divider, som brugeren kan trække rundt med, hvis han vil ændre lidt på UI'en). Hvis jeg trykker igen, et det det valgte objekt, der flytter sig.
Jeg forstår ikke, hvorfor SplitContaineren reagerer på tastetryk - og kun det første. Den må jo nødvendigvis have fokus for at kunne det, men hvordan forhindrer jeg det? Muligvis smide en eller anden usynlig control på, som får key-eventet, smider det videre til min handler og derpå consumer det, så SplitContaineren ikke får det... Men det virker lidt hacky.
Jeg har også puslet med tanken om at override ProcessCmdKey() og lave al inputhåndtering dér, men det virker bare ikke som den rigtige måde at gøre det på.
Ideas anyone?