首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求教关于datagridview回车换行的有关问题,小弟我重载了ProcessDialogKey()函数但是不管用

2013-09-05 
求教关于datagridview回车换行的问题,我重载了ProcessDialogKey()函数但是不管用datagridview回车会自动换

求教关于datagridview回车换行的问题,我重载了ProcessDialogKey()函数但是不管用
datagridview回车会自动换行,我不想让他换行,去网上查了下
有说重载ProcessDialogKey函数的我试了试,遇到个奇怪的问题



    public class MyDataGridView : DataGridView
    {
        protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.E || keyData == Keys.Enter || keyData == Keys.I)
            //上面一条做实验 条件是判断e,i,回车
            {
                MessageBox.Show("123");

                return true;
            }
            return base.ProcessDialogKey(keyData);
        }[code=csharp]

  
    } 
[/code]
我按上边那么些,当按下E和I的时候 成功弹出对话框“123”,但是我按回车就毫无反应,
我在这个函数中加断点,执行的时候发现按E和I可以进入函数,我按回车干脆都没有进入过
ProcessDialogKey这个函数,也就是说我按回车根本就没调用过这个函数,求解为什么会这样
我看到datagridview的定义里还有一些函数例如:

ProcessEnterKey(Keys keyData);
ProcessF2Key(Keys keyData);
ProcessEscapeKey(Keys keyData);

这些函数不允许重载,难道datagridview对不同的按键做单独处理吗?

------------------------------------
下边是问题2: 下边是dataGridView的KeyPress函数

  private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar ==(char) Keys.E)
            {
                MessageBox.Show("e");
            }
            if (e.KeyChar ==(char) Keys.Enter)
            {
                MessageBox.Show("enter");
            }
        }


我按回车会进到这个函数,跟上边的完全反过来我按E就不进到这个函数,这时怎回事?



[解决办法]
引用:
Quote: 引用:

问题1:可以重写OnKeyPress方法,获得上述按键。
 protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.E 
[解决办法]
 e.KeyChar == (char)Keys.Enter 
[解决办法]
 e.KeyChar == (char)Keys.I)
            //上面一条做实验 条件是判断e,i,回车
            {
                MessageBox.Show("123");
            }
            base.OnKeyPress(e);
        }

OnKeyPress是在哪定义的 我看datagridview里没有这个函数啊


public partial class CustomControl1 : DataGridView
    {
        public CustomControl1()
        {
            InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }

        protected override bool ProcessDialogKey(Keys keyData)
        {
            return base.ProcessDialogKey(keyData);


        }

        protected override bool ProcessDataGridViewKey(KeyEventArgs e)
        {
            return base.ProcessDataGridViewKey(e);
        }

        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.E 
[解决办法]
 e.KeyChar == (char)Keys.Enter 
[解决办法]
 e.KeyChar == (char)Keys.I)
            //上面一条做实验 条件是判断e,i,回车
            {
                MessageBox.Show("123");
            }
            base.OnKeyPress(e);
        }
    }


都有的,你得细心点看。

热点排行