首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按TAB键时,绕过DataGridView中的只读单元格

在 DataGridView 中,当按下 TAB 键时,如果遇到只读单元格,可以通过修改 DataGridView 的选择模式来实现绕过只读单元格的功能。以下是一种实现方法:

  1. 首先,在 DataGridView 的属性中,将 SelectionMode 设置为 CellSelect。
  2. 然后,在 DataGridView 的 KeyDown 事件中,添加以下代码:
代码语言:csharp
复制
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Tab)
    {
        int currentRowIndex = dataGridView1.CurrentCell.RowIndex;
        int currentColumnIndex = dataGridView1.CurrentCell.ColumnIndex;

        bool isReadOnly = dataGridView1.Rows[currentRowIndex].Cells[currentColumnIndex].ReadOnly;

        if (isReadOnly)
        {
            if (e.Shift)
            {
                // 向前移动
                for (int i = currentColumnIndex - 1; i >= 0; i--)
                {
                    if (!dataGridView1.Rows[currentRowIndex].Cells[i].ReadOnly)
                    {
                        dataGridView1.CurrentCell = dataGridView1.Rows[currentRowIndex].Cells[i];
                        break;
                    }
                }
            }
            else
            {
                // 向后移动
                for (int i = currentColumnIndex + 1; i< dataGridView1.Columns.Count; i++)
                {
                    if (!dataGridView1.Rows[currentRowIndex].Cells[i].ReadOnly)
                    {
                        dataGridView1.CurrentCell = dataGridView1.Rows[currentRowIndex].Cells[i];
                        break;
                    }
                }
            }
        }
    }
}

这段代码的作用是,当按下 TAB 键时,如果当前单元格是只读的,则会自动跳过该单元格,选择下一个可编辑的单元格。如果按下 Shift + TAB 键,则会向前移动到上一个可编辑的单元格。

通过这种方式,可以实现在 DataGridView 中按下 TAB 键时,绕过只读单元格的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

自定义控件,可直接用到工作表单元格中 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...输入过程中动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按Enter或Tab键确定内容录入。...和Tab键的功能,默认为窗体退出键和TabIndex跳转键,这里有个对一个方法进行重写即可。...KeyDown事件,例如此处的录入功能中,按Enter是跳转到下一行,按Tab是跳转到右侧列,实现键盘盲打录入不依赖鼠标实现。...,使我们在上层构建业务代码时变得如此轻松,此篇给大家展示了在工作表单元格区域上创建自定义控件的能力,发挥得当,较直接弹出窗体的效果要友好得多。

1.3K10

C# winform DataGridView 常见属性

C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行、列的隐藏和删除...如果希望,DataGridView 内某个单元格不可编辑, 那么只要: // 设置 DataGridView1 的第2列整列单元格为只读 DataGridView1.Columns[1].ReadOnly...DataGridView.ClipboardCopyMode 属性被设定为 DataGridViewClipboardCopyMode.Disable 以外的情况时,「Ctrl + C」 按下的时候,...「Ctrl + V」按下进行粘贴时,DataGridView 没有提供方法,只能自己实现。 以下,是粘贴时简单的事例代码,将拷贝数据粘贴到以选择单元格开始的区域内。...在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。

3.9K40
  • C#—— DataGridView控件的各种操作总结(单元格操作,属性设置)

    ********DataGridView 设定单元格只读: 1) 使用 ReadOnly 属性 ? ...的[0,0]单元格为只读 DataGridView1[0, 0].ReadOnly = true; *******DataGridView 行头列头的单元格 // 改变DataGridView1的第一列列头内容...在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。...DataGridView.ClipboardCopyMode 属性被设定为 DataGridViewClipboardCopyMode.Disable 以外的情况时,「Ctrl + C」 按下的时候,被选择的单元格的内容会拷贝到系统剪切板内...「Ctrl + V」按下进行粘贴时,DataGridView 没有提供方法,只能自己实现。 以下,是粘贴时简单的事例代码,将拷贝数据粘贴到以选择单元格开始的区域内。

    9.7K32

    DataGridView控件用法一:数据绑定

    在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可。...一、非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性...与基于文本的值一起使用,在绑定到数字和字符串类型的值时自动生成 DataGridViewCheckBoxColumn 与boolean和checkState值一起使用,在绑定到这些类型的值时自动生成...,通常用来做未绑定列 DataGridViewComboBoxColumn 用户在单元格中显示下拉列表,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格中显示超链接...在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可。

    4K20

    可视化数据库设计软件有哪些_数据库可视化编程

    2)创建新查询:右击相应的表适配器,选择“添加查询”命令,按默认向导进入使用SQL语句编辑窗口(见图5-19),并编写SQL语句,单击“下一步”按钮,将“方法名”改为“FillByDeptID”即可。...用户可以使用 DataGridView 控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图。...属性:表示记录(行)中第j个字段(单元格)。...5.DataGridView列的编辑 单击DataGridView控件的设计器中“编辑列”选项,或者在DataGridView控件的“属性”面板中单击Columns属性右侧的省略按钮,即可进入“编辑列...///单元格单击事件,获取当前选择的单元格的值--以下有3种方法 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs

    6.8K40

    C#二十八 数据绑定

    时列是否移动 ReadOnly 指定单元格是否为只读 ColumnCount DataGridView中显示的列数 RowCount DataGridView中显示的行数 Rows 所有控件的行 CurrentCell...事件 说明 CurrentCellChanged 单击单元格时发生 CellContentClick 单击某个单元格时发生 从窗体设计工具箱窗口的“数据”卡片中拖一个DataGridView...DataGridView控件每一行都是一个DataGridViewRow对象,每一行中按照列划分为很多单元格,每一个单元格就是一个DataGridViewCell对象。...你可以像获取数据表数据那样获取DataGridView控件中任意一个单元格的数据,因为DataGridView控件中表示行的集合也是Rows,在每一行对象(DataGridViewRow对象)中又有一个...(); } DataGridView控件提供了CurrentCellAddress属性来获得选中单元格的列表和行标,如下代码修改DataGridView中选中的单元格中对应表中项的值: privatevoid

    11910

    DataGridView使用小结

    //只选中一行时设置活动单元格                     if (dataGridView1.SelectedRows.Count == 1)                     {...contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);                 }             }         } 效果图: 2).复制选中单元格的内容到剪贴板... = false;//必须在代码中设置 4).显示图片 通常,我们将图片路径保存在数据库中,但在dataGridView1中要显示图片,可以进行如下操作: ①.添加一个DataGridViewTextBoxColumn...类型的列,Name=Path,DataPropertyName=Pic,Visible=False; ②.添加一个DataGridViewImageColumn类型的列,Name=Pic; ③.dataGridView1...逐列按下边设置可去掉: dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;

    2.3K20

    C#——DataGridView控件填写数据事件

    对于DataGridView控件,与单元格内容相关的有以下这几个事件: // 当单元格内容改变并且提交之后发生(提交一般是单元格在编辑完之后失去焦点.../ 当单元格进入编辑状态时发生 private void dataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs...private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) { } 但是以上这几个事件都不能实现每次向单元格输入新的内容时发生...EditingControlShowing事件比上述事件还要早发生,他是dataGridView控件为了使用户可以编辑,而加载一个TextBox(如果单元格时复选框,是其他的控件,那么就加载对应的控件)...,加载TextBox时这个事件发生,可以在时间参数中获取这个TextBox的引用,动态注册一个事件即可。

    1.6K62

    计算机一级复习资料

    √25、鼠标指针形状呈抄漏型,表示需要等待 注意:抄漏型表示等待,+表示精确定位 二、单选题 B1、在Excel中,复制一个选定单元格的数据时,需要按住()键,并拖动鼠标到目标位置。...(假设当前单元格并非第一行) A按↓键 B按Shif+Enter键 C按↑键 D按Enter键 注意:按↓键,按Enter键是向下;按↑键是向上,但同时选定区域会消失,Shif+EnteR键上移且选定区域不消失...;TAB键右移 D6、在多媒体系统中,最适合存储声、图、文等多媒体信自的是(    )。...中,要将当前单元格移到Al单元格,应按()键 A.ct rl+Home B.Home+Shift C.Home D.Pgup 注意:按HOME是移到当前行第一个单元格,按CTRL+HOME是移动到...用”我的电脑”或”资源管理器”窗口中“文件”菜单中的删除命令 B. 按Shift+ Delete键 C. 按Delete键 D.

    1.3K20

    jupyter扩展插件Nbextensions使用

    为了编辑你的快捷键,打开键盘快捷键帮助对话框,或者按下命令模式下的h键,或者从菜单中选择快捷键。 ?...当这个扩展被加载时,对话框中的每一个快捷方式都会显示一个小的下拉菜单,其中有删除或编辑快捷方式的条目. ? 单击edit item将打开第二个模式对话框,其中有一个文本输入。...当输入有焦点时,你可以按下键来形成你的组合。重置按钮(左边的卷发箭头)允许您清除您可能输入的任何键。 ? 如果你想禁用现有的快捷方式,你可以点击下拉菜单上的“禁用”按钮。...,用标题隔开.任何标记的标题单元格(也就是以1-6字符开头的单元格),一旦呈现,就会变成可折叠的.标题的折叠/扩展状态存储在单元元数据中,并在笔记本加载上重新加载....则在进行注释时也会有代码补全的提醒.并且此插件不需要用空格的形式或者是Tab键的形式. ---- Nbextensions dashboard tab 在主页中提供配置Nbextensions的接口.

    3K40

    使用C#开发数据库应用程序

    :教你一招快速输入 输入cw+Tab+Tab,就出来Console.WriteLine();了!...鼠标双击事件,当用户双击窗体时发生 MouseMove 鼠标移动事件,当鼠标移过窗体时发生 KeyDown 键盘按下事件,在首次按下某个键时发生 KeyUp 键盘释放事件,在释放键时发生 例如...Multiline 表示是否可以在文本框中输入多行文本 PasswordChar 指示在作为密码框时,文本框中显示的字符,而不是实际输入的文本 ReadOnly 指定是否允许编辑文本框中的文本...DataGridView的列是否移动 ReadOnly 指定单元格是否为只读 AllowUserToAddRows 是否允许用户增加行 false AllowUserToDeletRows 是否允许用户删除行...详细请看P214页 (1)创建窗体,设计窗体界面 (2)设置窗体中DataGridView的属性 (3)填充数据集,显示数据 (4)将修改后的数据提交到数据库 (5)实现按性别筛选功能 8-

    5.9K30

    【C#】让DataGridView输入中实时更新数据源中的计算列

    本文适用Winform开发,且DataGridView的数据源为DataTable/DataView的情况。...DataGridView(下称dgv),A、B两列都要在dgv中显示,其中A列可编辑(ReadOnly=false)。...可以看到,计算列得到更新的关键有两处: dgv单元格的数据要提交到数据源相应单元格 源行结束编辑状态 按常规提交流程,必须使焦点离开单元格所在的行(只离开单元格都不行哦)才能达到目的,而我们的需求是,编辑的过程中就要实时更新...也就是如果要连续输入,必须在每次输入后用鼠标或方向键取消全选并将光标定位到正确的位置~这不蛋疼吗,必须解决!首先为什么会全选的原因不明,我猜是由于数据源的更新反过来影响dgv所致。...粗略一看,是EM_SETSEL,经过了解,就是EM_SETSEL,所以接下来要做的就是自定义一个文本编辑控件,让它忽略这个消息,完了让这个控件成为dgv单元格中的文本编辑控件。

    5.3K20

    visual studio运行程序的快捷键_visual studio快捷方式在哪

    CTRL+X剪切 ALT+空格键窗口菜单 CTRL+V粘贴 CTRL+ESC开始菜单 拖动某一项时按CTRL复制所选项目 拖动某一项时按CTRL+SHIFT创建快捷方式 将光盘插入到CD-ROM...显示“系统属性” 【窗口】+TAB在打开的项目之间切换 辅助功能 按右边的SHIFT键八秒钟切换筛选键的开和关 按SHIFT五次切换粘滞键的开和关 按NUMLOCK五秒钟切换切换键的开和关 左边的...Ctrl+[ 按磅值缩小所选定内容的字号 Ctrl+“=” 将选定内容设为下标 Ctrl+“+” 将选定内容设为上标 Ctrl+“*” 显示/隐藏所有非打印字符 Ctrl+Tab 在单元格中插入制表位...,并将插入点放置到单元格内容末尾 Backspace 编辑活动单元格,然后清除该单元格,或在编辑单元格内容时删除活动单元格 中的前一字符 Delete 删除插入点右侧的字符或删除选定区域中的内容...绘图时按下Alt 键 临时切换“格线对齐”功能 画椭圆时同时按住Shift 键 绘制垂直、水平、30 度、45 度或60 度角的直线 画椭圆时同时按住Ctrl+Shift 键 绘制以特定点为圆心画圆

    4.8K10

    Excel数据输入技巧:跳到下一个单元格或前一个单元格

    稍后,选择该命名区域,然后按Tab键,以正确的顺序轻松地从一个单元格切换到下一个单元格。或者,如果要移回上一个单元格,以便更改输入,按Shift+Tab组合键。...接下来,按住Ctrl键并选择下一个单元格,直到选择完剩余的标识为3到7的单元格为止。最后,选择顺序中的第一个单元格,本例中为单元格C3。 为什么最后选择第一个单元格?...因为这使它成为该区域内的活动单元格,因此稍后将自动在该单元格中开始。 单元格选择完成后,单击公式栏左侧的名称框,输入名称,例如本例中为“Grades”,按下回车键。...单击名称框右侧的下拉箭头,选择名称,示例中为“Grades”,如下图2所示。 图2 在当前单元格中输入学生姓名,按Tab或回车键到下一个单元格,重复这个步骤直至输入完所有数据。如下图3所示。...图3 提示:要返回到前一个单元格,按Shift+Tab键或者Shift+回车键。

    2.5K30
    领券