C#分解gif各帧并保存
using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent();…
using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent();…
上边为一个自定义类Person,下边是他的集合类PersonCollection: 调用示例:
若表是独立存在的(所有字段和其他表都没有关系),照《SqlDataAdapter+DataTable+DataGridView数据库更新示例》的方法,对表进行增删改查是非常便捷的,反之,若表中的字段有些是和其他表有关系的,例如产品进仓表,添加记录后还得修改产品汇总表中的总量;产品出仓表,添加记录前得判断出仓数量有没有超过当前库存量,用文章中的方法就很难实现了。所以,我们必须在DataGridView进行增删改查操作,然后手动写数据库更新代码。代码如下:
结果: Unchanged Unchanged ---------------------------------- Modified Unchanged ---------------------------------- Category1
还有一种简便的方法,使用SqlCommandBuilder自动生成InsertCommand、UpdateCommand和DeleteCommand: 这种方法有个缺陷:若表中包含自动递增的字段且为主键,添加一条新记录后,再进行修改或删除操作都会出错,提示"违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条"!
using System; using System.Windows.Forms; using System.Diagnostics; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.IO.File.…
效果图: 相关代码:
上边代码在窗体上写了几个字,当窗体最小化再恢复后,你会发现文字没掉了,解决方法是在窗体的Paint事件中进行绘图: 另一个问题在窗体的Load事件中无法进行绘图,同样也是要放在Paint事件中进行:
如上图示,当行数不够时,DataGridView下部分是一块空白区域,不怎么美观,就想用网格来填充。最后的思路是手工绘制线条来完成,只要能找着下图几个红色位置的坐标,其他就好办了: 最终效果: 实现代码:
执行结果: 可见,每次循环都调用了一次Number方法,C#内部没有自动创建一个变量并赋值Number(),所以建议手工创建变量赋值: 执行结果: