C# winform datagridview 编辑状态的问题

windows程序设计 同时被 3 个专栏收录
32 篇文章 1 订阅
41 篇文章 0 订阅
4 篇文章 0 订阅

winform的datagridview,其中某个cell在编辑时,如果再点击其他菜单或者使用快捷键完成某个功能,编辑的cell所在的内容会保留原来的值,而不会更新为新的值

控件没有主动触发losefocus的功能

所以需要考虑如何实现一个work around

 

既然菜单和快捷键不会触发更新,而同一个界面的button.focus可以触发datagridview的值更新,那么可以定义一个size为0,0的button,让它focus,再进行其他操作。

 

注意1:直接设置visible=false或者button.hide,然后设置button.focus会没有效果

注意2:要设置属性button.TabStop=false,避免tab切换聚焦时的停留

注意3:窗口的KeyPreview属性设置为true才能触发快捷键

不使用此方法之前的效果/使用此方法之后的效果,见下列动图:

 

示例代码:    --->   精髓在button1.Focus();

        // 菜单测试示例
        private void 显示cell内容ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            button1.Focus();
            MessageBox.Show(dataGridView1.Rows[0].Cells[0].Value as string);
        }

        // 快捷键测试示例
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                button1.Focus();
                MessageBox.Show(dataGridView1.Rows[0].Cells[0].Value as string);
            }
        }

 

  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值