我想做一个类似上图的基于datagridview的智能提示功能.现在思路是panel包含一个gridview 根据光标所在位置来定位.  现在dataGridView找不到DataGridViewTextBoxColumn的keydown事件 求助. 最好有源码   小弟刚开始做winfrom程序 各位大侠帮帮忙!!!

解决方案 »

  1.   

    用grid的keydown不行吗,自己判断在哪列哪行
      

  2.   

    不行,grid的keydown是针对整个from  在textbox里面输入的时候是不触发这个事件的.
      

  3.   

    看不到图片,现在看你的描述 就是要用 grid的keydown,自己判断在哪列哪行
      

  4.   

    编辑状态下不能触发keydown事件啊
      

  5.   

    呵呵,我没图床.  就是在一个grid的textbox里面输入字符,然后在textbox的下方弹出另外一个grid里面显示like出的数据以供选择.就百度的智能提示那种 我现在要在winfrom的grid上面实现.
      

  6.   

    http://blog.csdn.net/remember_me/article/details/6455051
      

  7.   

    谢谢楼上的,用textbox我会. 现在问题是我不知道怎么注册grid中textbox的keydown事件
      

  8.   

    实验下把,派生一个自己的控件
    public class MyEditingControl : TextBox, IDataGridViewEditingControl
    {
      //这里面能截获把,我没试验过,楼主帮忙测试下
    }//定义自己的cell
    public class DataGridViewMyTextCell : DataGridViewTextBoxCell
        {
            public DataGridViewMyTextCell()
                : base()
            {
            }        public override void InitializeEditingControl(int rowIndex, object
                initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
            {
                
                base.InitializeEditingControl(rowIndex, initialFormattedValue,dataGridViewCellStyle);
                MyEditingControl ctl =DataGridView.EditingControl as MyEditingControl;
                if (this.Value != null)
                {
                    ctl.Text = this.Value.ToString();
                }
                else
                {
                    this.Value = "";
                }
            }        public override Type EditType
            {
                get
                {
                    return typeof(MyEditingControl );
                }
            }        public override Type ValueType
            {
                get
                {
                    return typeof(string);
                }
            }        public override object DefaultNewRowValue
            {
                get
                {
                    
                    return "";
                }
            }        public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, System.ComponentModel.TypeConverter formattedValueTypeConverter, System.ComponentModel.TypeConverter valueTypeConverter)
            {
                return base.ParseFormattedValue(formattedValue.ToString(), cellStyle, formattedValueTypeConverter, valueTypeConverter);
            }
        }