网站首页 > 教程分享 正文
Hello,感谢阅读这篇文章。
首先声明,我不是一个程序员,.net相关的知识完全出于个人兴趣自学的,这个小系列主要分享一些作为小白的我在学习winform过程中踩的一些坑,希望能帮到大家。
承接上一篇,继续分享DataGridView的一些用法。
1、DataGridView数据前面自动加序号
我们知道,DataGridView呈现数据时,前面是没有序号的,而有时候,呈现数据时的自动编号可以让数据更加直观。
我们可以在DataGridView的RowPostPaint事件中,添加以下代码,即可轻松实现数据的自动编号啦
private void DgvStockInForm_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
//DGV自动编号,DgvStockInForm是我的DataGridView控件的命名,记得改成自己的
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, DgvStockInForm.RowHeadersWidth - 4, e.RowBounds.Height);
TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), DgvStockInForm.RowHeadersDefaultCellStyle.Font, rectangle, DgvStockInForm.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}
效果如下:
注意看,GIF图中DataGridView在没有添加数据的时候,默认会有一个空白行,这是因为DataGridView的AllowUserToAddRows属性设置为True了,我们把它改成False就没有空白行了。当然也可以直接修改控件,点击右上角小三角,去掉勾选“启用添加”。步骤如下:
2、DataGridView数据联动更新
在用DataGridView的时候,我们可能会有一点困惑,如果我想编辑其中一个单元格的内容,另外一个单元格的内容同时跟着更新,需要怎么操作呢,其实只要简单几句代码就可以实现啦。
首先,这个操作是在DataGridView的EditingControlShowing事件中发生,然后编辑的时候会触发一个委托事件(委托事件需要我们自己写)。
我直接贴代码。
// DgvOutByBOM是我的DataGridView的命名
private void DgvOutByBOM_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//判断当前的控件
if(e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))
{
DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;
////编辑控件内容时触发委托事件
editingControl.TextChanged += new EventHandler(editingControl_TextChanged);
}
}
void editingControl_TextChanged(object sender, EventArgs e)
{
//内容更改时,用更改后的内容重新生成SQL语句
string StrSql = #34;SELECT QTY FROM inventory WHERE PROJECT='{this.DgvOutByBOM.CurrentCell.EditedFormattedValue}' AND MPN='{this.DgvOutByBOM.CurrentRow.Cells["MPN"].Value}'";
//重新查询数据库
DataTable DtResult= new ConnectDB().QueryDB(StrSql);
if(DtResult.Rows.Count==0)
{
//如果查询结果为空,值为0
this.DgvOutByBOM.CurrentRow.Cells["Inventory"].Value = "0";
this.DgvOutByBOM.CurrentRow.Cells["DlyQTY"].Value = "0";
}
else
{
//如果查询结果不会空
this.DgvOutByBOM.CurrentRow.Cells["Inventory"].Value = DtResult.Rows[0][0].ToString();
this.DgvOutByBOM.CurrentRow.Cells["DlyQTY"].Value= DtResult.Rows[0][0].ToString();
}
}
效果杠杠的:
自己摸索学习,写起来也是蛮吃力,如果对各位有一点点帮助,麻烦不吝关注点赞收藏转发呀
如果对此篇内容感兴趣,也欢迎阅读我上一篇文章。
猜你喜欢
- 2024-10-23 NEW!WinForm界面开发设计时正式支持.NET 5
- 2024-10-23 Winform界面开发:如何在时间单元格中绘制旋转的文本
- 2024-10-23 WinForm界面开发:在DevExpress中使用TeeList控件及节点查询处理
- 2024-10-23 C# WinForm开发书店管理系统第四节
- 2024-10-23 C# WinForm界面设计教程——第6节
- 2024-10-23 C# + Blazor Web入门实战:私人笔记(8)创建分类编辑组件
- 2024-10-23 C# WinForm开发书店管理系统第三节
- 2024-10-23 如何快速开发树形列表和分页查询整合的Winform程序界面?
- 2024-10-23 WinForm+EF+devexpress开发小型CRM系统(1)
- 2024-10-23 正在Winform界面开发?带你了解Visual Studio Palette Editor
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)