日期:2014-05-18 浏览次数:21090 次
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); }
protected override void OnShown(EventArgs e) { dgvDatabase.Rows.Add(4); dgvDatabase.BeginEdit(false); base.OnShown(e); }
------解决方案--------------------
应该是焦点问题,当load事件结束后,form还有个show事件,会将焦点重新获取,所以当你把焦点移到grid上后,应该是直接可以编辑的。。。。
或者你在show中写this.dataGridView1.Rows.Add(4); //随便添加四行.
this.dataGridView1.BeginEdit(false);
试试看
------解决方案--------------------
友情帮顶!!
------解决方案--------------------
帮顶
------解决方案--------------------
第一: 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); } }
------解决方案--------------------
测试5楼代码时,请记得去掉Form1_Load_1(object sender, EventArgs e)相关代码。
就是5楼讲的不能有BeginEdit,否则没有配对的EndEdit
------解决方案--------------------
路过UP
同意楼上的意见!
------解决方案--------------------
private void Form1_Load_1(object sender, EventArgs e) { this.dataGridView1.Select();//加上这一句激活控件应该OK了 this.dataGridView1.Rows.Add(4); //随便添加四行. this.dataGridView1.BeginEdit(false); }
------解决方案--------------------
up
------解决方案--------------------
Form1_Load
先 Me.Show()
Me.Activate()
------解决方案--------------------
顶,同意5楼意见
------解决方案--------------------
你在MSDN里查下BeginEdit这个方法的解释就知道了。一定要当前单元格不为空,这个方法才会起作用。
------解决方案--------------------
up