用户空间里有keyDown事件但没有KeyPreview属性
我在用户控件里加个文本框或按钮就触发不了keyDown事件了
这个问题还请高人帮帮我

解决方案 »

  1.   

    设置用户控件所在窗体的KeyPreview属性。
      

  2.   

    设置用户控件所在窗体的KeyPreview属性。
      

  3.   

    设置用户控件所在窗体的KeyPreview属性。
      

  4.   

    使用控件事件
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                return base.ProcessCmdKey(ref msg, keyData);
            }
      

  5.   

    设置用户控件所在窗体的KeyPreview属性 也没用的触发不了
      

  6.   

    测试可行:
    protected override bool ProcessDialogKey(Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
    MessageBox.Show("KeyDown");
            return true;
        }
        return false;
    }
      

  7.   

    楼上的能说的再具体点么
    ProcessDialogKey(Keys keyData)
    方法在哪里调用它
      

  8.   

    给你个完整版的吧:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace AppMain
    {
    public partial class MyUserControl : UserControl
    {
    protected override bool ProcessDialogKey(Keys keyData)
    {
    if (keyData == Keys.Enter)
    {
    MessageBox.Show("KeyDown");
    return true;
    }
    return false;
    } public MyUserControl()
    {
    InitializeComponent();
    }
    }
    }
      

  9.   

    ProcessDialogKey没找到合适的方法重写是不是少了什么引用
      

  10.   

    Control类里头有这些事件的,你自己重写就可以了。加下面的代码到你自定义控件里头,keyup事件就会调用到里头
    protected override void OnKeyUp(KeyEventArgs e)
            {
                base.OnKeyUp(e);       //写你的逻辑
            }
      

  11.   

    楼上几位的下面这个方法可行,这个方法是相当于你自己重写的,不需要挂起,不需要触发。
    直接调用就可以使用。而且该方法不会被焦点所影响。
    protected override bool ProcessDialogKey(Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            MessageBox.Show("KeyDown");
            return true;
        }
        return false;
    }
      

  12.   

    WINCE中没有ProcessDialogKey可被继承的方法应该怎么做
      

  13.   

    重载 PreTranslateMessage 这个函数就可以了BOOL PreTranslateMessage(MSG*   pMsg)     //加入这个消息事件   
    {   //判断是否就是键盘   
    if   (pMsg->message == WM_KEYDOWN  ||    pMsg->message   ==   WM_KEYUP)       
    {     
    //这里是回车   
    /* if(pMsg->wParam==VK_RETURN   )   //虚拟键盘代码可以通过msdn或者sdk查找   
    {
    MessageBox(_T("000000000000000"));
    }*/
    switch(pMsg->wParam)
    {
    case VK_F1:
    m_KeyVol = " F1" ;
    break;
      

  14.   

    protected override bool ProcessDialogKey(Keys keyData)
    测试可行!