首页
学习
活动
专区
圈层
工具
发布

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

本文适用Winform开发,且DataGridView的数据源为DataTable/DataView的情况。...DataGridView(下称dgv),A、B两列都要在dgv中显示,其中A列可编辑(ReadOnly=false)。...),但dt和dv没有,后者只到行这一级,虽然可以通过DataRow[x]或DataRowView[x]访问单元格的值,但在类层级上并不存在DataCell这样的表示单元格的实体类,也就是dt和dv的编辑...可以看到,计算列得到更新的关键有两处: dgv单元格的数据要提交到数据源相应单元格 源行结束编辑状态 按常规提交流程,必须使焦点离开单元格所在的行(只离开单元格都不行哦)才能达到目的,而我们的需求是,编辑的过程中就要实时更新...二、解决键入后自动全选的问题 我是从控件消息这块打的主意,dgv的单元格实际上承载了某种编辑控件(如TextBox,CheckBox),所以甭管它是什么原因全选,最后总该是收到了什么消息它才全选,那么我就用

6.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DataGridView控件用法一:数据绑定

    一、非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件中,这样就为DataGridView控件增加了很大的灵活性...DataGridViewImageColumn 用于显示图像,在绑定到字节数组、Image对象或Icon对象自动生成 DataGridViewButtonColumn 用于在单元格中显示按钮,不会在绑定时自动生成...,通常用来做未绑定列 DataGridViewComboBoxColumn 用户在单元格中显示下拉列表,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格中显示超链接...//将新创建的行添加到DataGridView中 this.dgv_Demo.Rows.Add(drRow1); //设置DataGridView的属性...的CheckBox列 /// /// 要创建列的DataGridView ///

    4.7K20

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

    直观的说 1)首先,在数据库Sql server2019中新建一个数据库eg:students; 接着,右击students,任务,数据导入(操作并导入相应数据文件个eg:systudenfs); 2...1)修改主查询:右击相应的表适配器,在弹出的快捷菜单中选择“配置”命令,修改相应的SQL语句,单击“完成”按钮。...属性:表示记录(行)中第j个字段(单元格)。...5.DataGridView列的编辑 单击DataGridView控件的设计器中“编辑列”选项,或者在DataGridView控件的“属性”面板中单击Columns属性右侧的省略按钮,即可进入“编辑列...Visible:True显示字段,False隐藏字段。 5)行为 ReadOnly:True表示字段只读,False表示字段可读写。

    8.5K40

    【转】基于C#的WinForm中DataGridView控件操作汇总

    基于C#的WinForm中DataGridView控件操作汇总 一、单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1...属性(而不是直接访问单元格)来确定单元格所在的行: DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。...如果希望,DataGridView 内所有单元格都不可编辑, 那么只要: // 设置 DataGridView1 为只读 DataGridView1.ReadOnly = true;此时,用户的新增行操作和删除行操作也被屏蔽了...= true; // 设置 DataGridView1 的第3行整行单元格为只读 DataGridView1.Rows[2].ReadOnly = true; // 设置 DataGridView1...在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。

    6.1K50

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

    在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO...一般来说控件都是放到窗体或任务窗格中,但Excel同样支持将控件放到工作表单元格上,如前面提到的picturebox容器,放到单元格区域上,然后在容器上发图片,实现插入图片功能,同样地也可以存放单选、复选这些控件...自定义控件,可直接用到工作表单元格中 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...输入过程中动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按Enter或Tab键确定内容录入。...,使我们在上层构建业务代码时变得如此轻松,此篇给大家展示了在工作表单元格区域上创建自定义控件的能力,发挥得当,较直接弹出窗体的效果要友好得多。

    1.6K10

    DataGridView 中合并单元格

    Windows Forms DataGridView 没有提供合并单元格的功能,要实现合并单元格的功能就要在CellPainting事件中使用Graphics.DrawLine和 Graphics.DrawString...下面的代码可以对DataGridView第1列内容相同的单元格进行合并:         private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs...)                         //   如果下一行和当前行的数据不同,则在当前的单元格画一条底边线                         if (e.RowIndex 的内容的单元格只填写第一个                         if (e.Value !...((String)e.Value, e.CellStyle.Font,                                     Brushes.Black, e.CellBounds.X

    5.5K20

    DataGridView使用小结

    ();                         dataGridView1.Rows[e.RowIndex].Selected = true;                     }                    ...MousePosition.Y);                 }             }         } 效果图: 2).复制选中单元格的内容到剪贴板 Clipboard.SetDataObject...(dataGridView1.GetClipboardContent()); 3).只显示自定义列 dataGridView1.AutoGenerateColumns = false;//必须在代码中设置...4).显示图片 通常,我们将图片路径保存在数据库中,但在dataGridView1中要显示图片,可以进行如下操作: ①.添加一个DataGridViewTextBoxColumn类型的列,Name=Path... = false;//不启用添加 dataGridView1.ReadOnly = true;//不启用编辑 dataGridView1.AllowUserToDeleteRows = false;//

    2.8K20

    Excel催化剂开源第13波-VSTO开发之DataGridView控件几个小坑

    使用DataGridView的一些小坑 DataGridView内复选框状态改变激活事件 在Excel催化剂的【工作表导航】功能中,有用到DataGridView存储工作表信息,需要和用户交互的是用户点击复选框...image.png 若直接在Checkbox列上写CellValueChanged事件,会发现不起作用的。当然这一步也不可少。...this.dataGridView1[e.ColumnIndex, e.RowIndex].Value = true; this.dataGridView1.CellValueChanged...} } DataGridView的行手工排序问题 DataGridView原生功能没有实现通过按住某行拖动的方式实现不同行之间的排序问题。...此篇给大家扫清几个小坑,让大家开发过程中,更顺畅,尽情地在业务逻辑代码上发挥,少关注底层这些莫名的坑坑洼洼。

    1.4K50

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

    对于DataGridView控件,与单元格内容相关的有以下这几个事件: // 当单元格内容改变并且提交之后发生(提交一般是单元格在编辑完之后失去焦点...举个例子,我单击一个单元格,则单元格进入编辑状态,CellBeginEdit事件发生,然后我输入1,2……乃至更多的东西,上述的事件也不会发生。另外Key*系列的事件也试过,也没反应。...如果要像TextBox那样,每输入一个字符就发生一次的事件怎么办呢?可以用以下方法。原来dataGridView控件的单元格只是个容器,他可以容纳其他的控件,最一般的就是一个文本框。...EditingControlShowing事件比上述事件还要早发生,他是dataGridView控件为了使用户可以编辑,而加载一个TextBox(如果单元格时复选框,是其他的控件,那么就加载对应的控件)...,加载TextBox时这个事件发生,可以在时间参数中获取这个TextBox的引用,动态注册一个事件即可。

    2K62

    WinForm 为 DataGridViewCell 绑定 DataGridView

    对外提供一个 public 的方法: // 正常 Type1 是 JSON 的数据集或者 BSON 的数据集 public void FillDataGridView(Type1 data, DataGridView...){             // 创建子 DataGridview             // 属性根据自己的需要设定             DataGridView view = new DataGridView... = gridView;             // 以下这种方法,需要单元格都是等长等宽才能有好的效果             view.Left = gridView.Left + gridView.RowHeadersWidth... 中的数据             // 接下来有两个响应方法,在这个方法的后面,往下翻就有了             gridView.CellClick += GridViewCellClick;...view.Visible = true;         // 此处让 view 获得焦点时为了给 GridViewLeave 提供方便         // 如果此处不加 Focus 的话,就需要先点击

    1.2K50
    领券