WinForm中datagridview问题. 同样的 this.dataGridView1.BeginEdit(false); 在按键事件和Form_load事件中执行的效果却不一样.为什么?
重新开帖问:
代码:
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