重新开帖问:
代码:
 private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.BeginEdit(false);          }        private void Form1_Load_1(object sender, EventArgs e)
        {
          
            this.dataGridView1.Rows.Add(4); //随便添加四行.
            this.dataGridView1.BeginEdit(false);
        }参见上一贴:http://http://topic.csdn.net/u/20080530/11/ff4ea6e5-a342-47d5-8ffd-b3101bfd0b30.html用button1_Click, datagridview可以进入编辑状态, 而在Form1_Load里却不能直接进入编辑状态. 为什么?
我已将问题简化,Form只有一个button和datagridview. dataGridView也只随便添加了一个文本列.

解决方案 »

  1.   


    protected override void OnShown(EventArgs e)
    {
    dgvDatabase.Rows.Add(4);
    dgvDatabase.BeginEdit(false);
    base.OnShown(e);
    }可能是焦点问题.
      

  2.   

    应该是焦点问题,当load事件结束后,form还有个show事件,会将焦点重新获取,所以当你把焦点移到grid上后,应该是直接可以编辑的。
    或者你在show中写this.dataGridView1.Rows.Add(4); //随便添加四行.
                this.dataGridView1.BeginEdit(false);
    试试看
      

  3.   

    第一: Form1_Load_1中的时候窗口还没有显示出来,而Form1_Load_1中的this.dataGridView1.BeginEdit(false);
    使得GridView进入了编辑状态,但内嵌编辑窗口却显示不出来(父窗口还没显示呢)。随后,又没有办法通过失去焦点来EndEdit()。你可以这样模拟这个错误:
    设dataGridView1的tabIndex为1,而按键的tabIndex为0(这样dataGridView就不会获得默认的焦点),你会发现你代码中连button1_Click都不好使了!第二:问题可以这样解决,不在Form_Load而在第一次显示窗口(Form_Shown)中来让dataGridView进入编辑状态。
    请参考以下代码:
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.dataGridView1.Rows.Add(4); //随便添加四行.             this.Shown += delegate { this.dataGridView1.BeginEdit(false); };     //<---
            }        private void button1_Click(object sender, EventArgs e)
            {
                this.dataGridView1.BeginEdit(false);
            }
        }
      

  4.   

    测试5楼代码时,请记得去掉Form1_Load_1(object sender, EventArgs e)相关代码。
    就是5楼讲的不能有BeginEdit,否则没有配对的EndEdit
      

  5.   

    private void Form1_Load_1(object sender, EventArgs e)
            {
                this.dataGridView1.Select();//加上这一句激活控件应该OK了
                this.dataGridView1.Rows.Add(4); //随便添加四行.
                  this.dataGridView1.BeginEdit(false);
            }
      

  6.   

     Form1_Load
               先 Me.Show()
                Me.Activate()
      

  7.   

    你在MSDN里查下BeginEdit这个方法的解释就知道了。一定要当前单元格不为空,这个方法才会起作用。
      

  8.   

    Form_Load 事件里面只能使用 dataGrid 获取到焦点BeginEdit只是针结 dataGrid中某个单元格