在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO...一般来说控件都是放到窗体或任务窗格中,但Excel同样支持将控件放到工作表单元格上,如前面提到的picturebox容器,放到单元格区域上,然后在容器上发图片,实现插入图片功能,同样地也可以存放单选、复选这些控件...自定义控件,可直接用到工作表单元格中 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...输入过程中动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按Enter或Tab键确定内容录入。...框架下,有大量微软工程师为我们搭建好的底层技术,使我们在上层构建业务代码时变得如此轻松,此篇给大家展示了在工作表单元格区域上创建自定义控件的能力,发挥得当,较直接弹出窗体的效果要友好得多。
dataGridView1视图,添加字段后如下所示 注意:在新的优化界面中我将该部分窗体重新放到了用户控件中去了,通过panel完成跳转交互,优化用户体验,如果需要更改优化的同学,可以看优化部分(2022...做一个获取,需要获取id值,来进行删除,首先新建一个“删除”按钮 双击在该方法中加入代码(这部分代码很关键,建议看懂,在开发中我找到另外一个方法不过他存在bug,这个无论有没有值不会报错)...,如果在borrow表中加入了room_num字段这样的话就不方便修改了,因为这时同一个字段会在多个表中,不利于修改,大家一定要明白这点,可以配合下图参照理解这句话) user表: ok分析完毕,...如果做到修改删除? 答:通过表单传值记录id在新的一个窗口查询一次数据,更新则是用了update 如果做到删除?...答:通过表单传值获取到的id进行数据库语句删除,删除本地的再删除数据库里面的 窗口如何传值: 本次通过构造函数,特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在目标窗体中 int
在CellStyle编辑器中,可以设置奇数行和偶数行的背景颜色、字体、前景颜色等样式属性。也可以选择使用其他样式。...下面是一个示例代码,演示如何设置DataGridView控件的ClipboardCopyMode属性:private void button1_Click(object sender, EventArgs...使用RowTemplate属性可以在DataGridView控件中自定义行样式。可以在DataGridView中添加多个行,每行都可以有不同的样式。...数据选择:DataGridView控件可以允许用户选择一行或多行数据。可以通过设置控件的属性来控制选择模式,如单选、多选等。...Step 2: 添加DataGridView控件在设计器中添加一个DataGridView控件,并在其上添加四个按钮:添加、编辑、删除和保存。
,然后DAL层还要用SqlHelper 进行各个存储过程对应参数的实体赋值, 我的天呀,写几个表还好,多个表呢, 写的后台都没力气, 典型的苦逼代码工没营养,各位有啥好的处理方法或开发方式。。 ...这里我采用另外一种方案,不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD,而秘诀就是对表单控件进行扩展。...实战篇: 按照这个方法,我在PDF.NET开发框架中实现了本文标题说的功能,最近还做了一个简单的例子,大家可以去开源项目网站下载: 项目网址: http://pwmis.codeplex.com...添加前,在工具箱中增加一个项:PDF.NET DataForm,然后在资源管理器中选择Windows数据控件组件的文件,将它“拖放”到刚才建立的 PDF.NET DataForm下面 ? ...3,添加数据窗体 我们在主窗体上放置几个按钮和一个网格控件,以便增、删、改、查询数据: ?
可以通过 CurrentCell 来设定 DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。...= "该行单元格内容不能修改"; 2) CellToolTipTextNeeded 事件 在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 CellToolTipTextNeeded...********DataGridView 判断新增行: DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行...; *******DataGridView 行的用户删除操作的自定义: 1) 无条件的限制行删除操作。 默认时,DataGridView 是允许用户进行行的删除操作的。...默认是 EnableWithAutoHeaderText , Header 如果选择了的话,就拷贝。
大家好,又见面了,我是你们的朋友全栈君。...可以通过 CurrentCell 来设定 DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。...默认时,DataGridView 是允许用户进行行的删除操作的。...默认是 EnableWithAutoHeaderText , Header 如果选择了的话,就拷贝。...[0].HeaderCell.ToolTipText = “该行单元格内容不能修改”; 2) CellToolTipTextNeeded 事件 在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低
大家好,又见面了,我是你们的朋友全栈君。...)打开VS2013, 首先,启动服务器资源管理器(执行菜单命令“视图”→“服务器资源管理器”,即可进入服务器资源管理器); 第二,建立数据库连接(在“数据连接”上右击弹出快捷菜单,选择“添加连接”命令...); 第三,类型化数据集的创建(新建一个“Windows应用程序”,然后在创建的项目上右击,在弹出的快捷菜单上选择“添加”→“新建项”命令,“模板”选择“数据集”); 第四,对已创建的数据集,单击“添加...如果数据源为 IBindingListView,并支持高级排序,则获取用于排序和排序顺序信息的多个列名。...6.DataGridView行的编辑 (1)允许记录的增、删、改 单击DataGridView控件右上角的小三角按钮,打开“DataGridView任务”面板,使“启用添加”“启用删除”“启用编辑”
如果我们需要详细查看某个请求,可以在左边列表选择一个,然后在右边点击Inspectors。点击Inspectors之后,我们可以看到右边有很多标签,上面是请求,下面是响应。...如果点击Raw视图的话,我们就可以查看原始的HTTP请求内容了。这里由于我在使用Fiddler捕获的时候网页开着简书,所以捕获了多个简书的自动保存请求。...按进程过滤 在按钮栏上有一个按钮叫Any Process,我们按住这个按钮不放,鼠标会变成十字,然后我们拖动到需要捕获的程序上,Fiddler就会获取到该程序的进程号,这样我们就可以只不过某个程序的请求了...使用过滤器 在右边选择Filter,选中Use Filter,即可使用过滤器。我们可以看到有很多过滤条件。 过滤主机。我们可以指定只捕获某些主机和端口号的请求。...如果不知道请求头和请求体如何填写,可以先使用浏览器提交一个表单,然后用Fiddler查看一下浏览器是如何提交的,再改为自己的。
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。...能够通过 CurrentCell 来设定 DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 能够取消激活的单元格。...在没有新行的时候,NewRowIndex = -1。...用户在删除行的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,能够推断条件并取消删除操作。...// DataGridView1 的上3行固定 DataGridView1.Rows[2].Frozen = true; ******DataGridView 列顺序的调整 设定 DataGridView
可以通过 CurrentCell 来设定 DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。...= "该行单元格内容不能修改"; 2) CellToolTipTextNeeded 事件 在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 CellToolTipTextNeeded...********DataGridView 判断新增行: DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行...; *******DataGridView 行的用户删除操作的自定义: 1) 无条件的限制行删除操作。 默认时,DataGridView 是允许用户进行行的删除操作的。...默认是 EnableWithAutoHeaderText , Header 如果选择了的话,就拷贝。
在我的一篇文章中,我解释了如何在没有数据库的情况下以web形式绑定gridview。这里,我将解释如何在没有数据库的windows窗体中绑定datagrid。...我的要求很简单。当我们输入所有字段并单击Book按钮时。它将暂时将数据绑定到如下所示的数据网格。我已经展示了下面的截图: ? 我们来看看怎么做,以下是实现步骤。 1、创建一个数据表。...3、将此列column添加到datatable 4、创建一个包含输入控件所有值的行。 5、将datatable绑定到Datagrid。 在做这个之前,我们需要先添加一个命名空间。...在输入第一次预订的详细信息后,当我进行第二次预订时,第一次预订的详细信息将会丢失,因此为了防止这种情况发生,您必须稍微修改一下代码。在这里,我已经解释了如何做到这一点。...在将行绑定到datagrid时,输入一个条件。首先,检查该数据表中是否有数据。如果没有数据,则绑定datagrid中的列标头,否则只绑定没有datacolumn标头的行。
我是职场编码,最近你还好吗? 哈哈,我这段时间一直在忙着学习强国。 你知道吗?学习强国里有个栏目叫挑战答题。 题库随机抽题,每天答对10道,才算过关。 这不,我这寻思做一个题库查询工具。...这个工具,我还真就做出来了。 这期,就跟我一起看看,这个工具如何制作。 准备数据库 因为C#本身不具备存储功能,因此我们需要选择一个数据库软件。 这里,我推荐Access数据库。...二是由于Textbox无法设置垂直居中,因此在它外面套了一个panel框架充当白底。 具体设置请参照上图。 查询按钮 这个控件需要修改的地方很少,你可以简单了解下。...下面,我只介绍核心代码。 引入命名空间 这次用到的有五个必选命名空间。 准备查询 在创建数据库连接过程中,由于我使用的是Access2016。...分享经验不易,如果对你有用,记得转发收藏~ 我是职场编码,我们下期再见!
我们在使用Office Excel的时候,有很多时候需要冻结行或者列。这时,Excel会在冻结的行列和非冻结的区域之间绘制上一条明显的黑线。...(VS.85).aspx) ,但是呢,DataGridView控件默认不会在冻结列或者行的分界处绘制一个明显的分界线,这样的话,最终用户很难注意到当前有列或者行是冻结的。...通常,我们如果想在现有的控件上多画点什么,就会去Override OnPaint方法,然后加入自己的OwnerDraw逻辑,但是呢在DataGridView上有一些困难: 1.如何确定冻结分界线的位置...2.如何保证分界线不会绘制到ScrollBar上 研究了一下,我们可以借用DataGridView提供的CellPainting方法。...在DataGridView绘制每一个Cell的时候判断当前Cell是否是分界线所在的位置,然后进行绘制。
传统的表格控件在展示数据表当中的一条记录时,大部分都是将一条记录展示在表格控件当中独立的一行里,每行当中的列对应数据表当中的一列,比如.net framework 提供的DataGridView控件,它做数据绑定绑定之后...编辑模板 在创建模板的时候,我们需要根据数据库当中的不同字段类型选择不同的Cell类型来展示数据。 本例中,我只使用了9种Cell类型,根据自己的喜好摆出来下面的布局形式: ?...我们在Form上添加一个GcMultiRow控件,然后将设计好的Template设置给他的Template属性,并且给GcMultiRow控件添加数据源,以及设置一些属性。...这时候,如果你将Form高度拉大,你会看到多个Row存在于Form之上,就像一个一个卡片一样,请看下图: ?...你也可以保持Form上面不管如何放缩都保持只有一个Row,这个需要写几行代码,在这里我就不演示了,如果感兴趣,可以访问GCDN的MulitRow专区,我们可以一起讨论一些细节的问题。
这是替C#微信交流群群友做的一个小实例,目的就是在datagridview选择对应行以后,点击button后获取对应行的ip,并执行相应的操作,其实我觉得这样的话button没必要非放置到datagridview...= "选择"; dataGridView1.Columns.Add(newColumn); 这样添加的列是放在最后一列,也许你希望它在其它列,例如第二列,那么可以: dataGridView1.Columns.Insert...DataGridView 添加一个button btn1.Name = "btnRun"; btn1.Text = "Run";...backColorBrush, e.CellBounds); // 画 Grid 边线(仅画单元格的底边线和右边线) // 如果下一行和当前行的数据不同...e.CellBounds.Left , e.CellBounds.Bottom); // 画(填写)单元格内容,相同的内容的单元格只填写第一个
-分布类 在C#中,为了方便代码的管理和编辑,使用partial关键字可以将同一个类的代码分开放在多个文件夹中,每个文件都是类的一部分代码。...经验:一次锚定多个控件,按住Ctrl键选择多个控件,然后再设置Anchor属性,可以一次锚定多个控件。...5-2:创建多文档界面应用程序(MDI) a.为什么使用MDI 比如:记事本 如果想在一个窗口中打开多个文件,就要使用MDI(多文档界面)应用程序。...b.什么是MDI 比如:在Microsoft Excel中,我们可以同时打开多个Excel文档,而不需要新开一个Excel窗口,这种应用程序我们称为MDI(多文档界面); c.如何创建MDI (1...MultiSelect 是否允许同时选择多行 false selectionMode 选择模式 FullRowSelect b.如何使用DataGridView显示数据 (1)添加窗体的控件
这么久没有发文,很多人关心我是否离开了这个美丽的世界 ... 这些同学,是如何居心?出来,我保证不打死你们。...1.HTML 大家好,我是 html ,学名为超文本标记语言。在浏览器上处处可以看到我的身影。当然,我自己不会如此伟大,身后支撑有一个团队,他们是化妆师 CSS 和动作指导 Javascript。...我身上有很多的标签,经过化妆师 CSS 的修饰,才得以展现如此靓丽的一面(让一些开了美颜、瘦脸、拉长身高的小姐姐自愧不如)。那么,简单的数数我身上有哪些标签。....box1,.box8{color:red} 2.2.6 伪类选择器 有一个常用的伪类选择器,它就是 hover ,表示鼠标悬浮于元素上时的状态。...封闭函数可以创造一个独立的空间,在封闭函数内定义的变量和函数不会影响外部同名的函数和变量,可以避免命名冲突,在页面上引入多个js文件时,用这种方式添加js文件比较安全.
引言:如何创建促进转化的注册表单? 译者 | 熊文凯 审校 | 王楠楠 编辑 | Rachel “一个简单又实惠的提升网站线索数和转化效率的方法。” 听起来很有趣,对吗?我描述的事实上是什么呢?...在一行中放置多个字段的唯一情况是:问题联系非常紧密且一个接一个地完成会更加合理时。例如,姓名表单字段应该放在相邻的位置。 不要重复询问信息 你是否曾经在填写表格时被要求输入两次密码?...让表单看起来很漂亮 你知道吗? 38%的人会因为网站内容和布局在视觉上缺乏吸引力或让人不愉快而停止使用网站。人们关心注册表单设计。让表单看起来专业,视觉上有吸引力,并确保它与你其他品牌的外观相匹配。...如果你花时间在漂亮的表单格式上,则会给线索留下一个持久的印象。 告诉你的线索注册的后续事宜 一旦有人完成了你的注册表单,请让他们知道接下来会发生什么。...如果你担心垃圾邮件,你可以试试后续验证,可以先让线索选中一个方框,上面写着“我不是机器人”,然后让他继续接下来的步骤。 测试注册表格 首先,测试表单是否正常工作。
做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以选择使用...在菜单 “项目”的最下面 工程属性 菜单,选择“生成”选项卡,将目标平台由“Amy CPU”或者“*64”改成“*86”。...声明:SqlDataReader 提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。...// 返回结果: 如果存在多个行,则为 true;否则为 false。 则只需将reader.Read()替换reader.HasRows执行循环,为什么行呢?...不过还要将循环里的Read()去掉,则每循环一次前进了两行数据。 } FieldCount 是读取有多少列字段,这里是返回的一个整数,读取到的列的个数.
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦。 ...实例描述:在数据库新建一张TbClass表,将表的内容读取到一个DataGridView上,并且可以在winform面板上对表里的内容进行增、删、改的操作。首先给出winform的设计: ?...); 19 } 20 } 21 //将list数据绑定到dataGridView上 22 this.dataGridView1....DataSource = list; 23 } 在使用SqlHelper之前,需要在App.config中添加配置代码和在项目中添加引用,这是需要注意的,因为在以前的博客中有详细讲解如何添加,...然后,要在鼠标选中某一行时,获取该行的tClassId.接下来看看获取该id的做法: 在dataGridView的属性页中找到一个名为RowEnter的事件,双击进入方法,编写函数: ? ?
领取专属 10元无门槛券
手把手带您无忧上云