开发者

Can I disable keyboard input to a specific control?

Is it possible to disable keyboard input to a control? Fo开发者_如何学JAVAr instance a ListView? How do I do that? I've tried overriding the KeyUp KeyDown events but apparently that was not the way?

IsEnabled is a good solution, however I only wish to disable keyboard interaction and leave mouse interaction intact.


Handling the KeyDown event is too late, but you can handle the PreviewKeyDown event and that should give you the behavior you are looking for:

private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
   e.Handled = true;
}


Dear maciek, the only thig you need to do is using OnKeyDown event just do

private void txtInput_KeyDown(object sender, KeyEventArgs e)
    {
            e.Handled = true; // user can input
            e.Handled = false; // user cannot input
    }


KeyDown generally works for me if you do the following in it:

e.Handled = true;
e.SuppressKeyPress = true;

A more complete example with a practical application (disabling input from non-numeric characters): http://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536

John makes a good point though. Any reason you would want to disable interaction with the Control but not set Enabled = false?

Edit: I just noticed the WPF tag. Not so sure of my answer anymore since I'm a WPF hater ;-)


That is the purpose of the WebControl.Enabled = false; to prevent it from responding to user input.

edit: now that the question has changed, disabling the control is no longer a solution. However I think a control that responds to mouse clicks by not keyboard is buggy, not everyone prefers to use the mouse.


KeyPressEventArgs.Handled : Gets or sets a value indicating whether the KeyPress event was handled.

Property Value Boolean true if the event is handled; otherwise, false.

if you set e.Handled = true, keyboard event not dispatch anymore.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜