c# - Trackbar keeps stealing my focus -
it has been asked few times couldn't use of answers. problem everytime want change trackbars value keeps focused when i'm clicking on other parts of window. , when want use keys work in trackbarbox.
what did try?:
-i tried set causesvalidation/tabstop/topmost false/true
-i tried use mouseleave/focusenter events set focus on form this.focus()
-i tried put
protected override bool isinputkey(keys keydata) { return true; } and/or
protected override bool showwithoutactivation { { return true; } } into maincode
here screenshot of programm understand problem: it's german doesn't matter. want press enter while i'm drawing line trackbar keeps focused , blocks it
the usual way to override onkeydown event after setting keypreview = true:
protected override void onkeydown(keyeventargs e) { base.onkeydown(e); // code here.. text = "testing: keycode" + e.keycode; } but can use previewkeydown event. make sure set form's keypreview property true , add common event controls might steal/receive focus!
since previewkeydown event of controls usees different argument need route event form's keydown event:
private void commonpreviewkeydown(object sender, previewkeydowneventargs e) { form1_keydown(this, new keyeventargs(e.keycode)); } private void form1_keydown(object sender, keyeventargs e) { // code here.. text = "testing: keycode" + e.keycode; } you may want hook handles in code:
void routekeys(control container) { foreach (control ctl in container.controls) if (ctl.canfocus) ctl.previewkeydown += commonpreviewkeydown; } call this:
public form1() { initializecomponent(); routekeys(this); } of course may want add filters prevent routing of keys form not going process..
a difference between 2 techniques when override form.onkeydown receive keyevents anywhere; include e.g. textboxes both character , editing keys routed form.
if don't want need add filter event:
if (tb_notes.focused) return; if (tb_morenotes.focused) return; if (rtb_edit.focused) return; the second way let's decide controls shall included or excluded in routing..:
if (ctl.canfocus && !(ctl textbox || ctl richtextbox)) ctl.previewkeydown += commonpreviewkeydown;
Comments
Post a Comment