一:关于C#中的messagebox的使用:MessageBox函数MessageBox()函数MessageBox是标准的windows Api函数只能在CWnd类的继承类中使用,在C#中使用时,通常用MessageBox的show方法来实现对话框的弹出,命名空间System.Windows.Forms。
应用实例:MessageBox.Show("编程爱好者", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
其中参数说明:1)对话框显示的内容 2)对话框的名称 3)对话框可以选择的按钮 4)对话框中图标的样式 5)对话框中默认选择的按钮 函数的返回值是DialogResult 类型的变量
3中对话框可以选择的按钮有MessageBoxButtons.OkCancelRetryAbortIgnore等。 4中对话框的样式有MessageBoxIcon.Question,有Asterisk,Information,Error,Stop,Warming,None等。 5中设置默认按钮主要是如果弹出对话框之后,直接回车选择的就是默认的那个按钮。
二:winform中的formClosing函数和formClosed函数:
FormClosing 在关闭前发生,即要关但未关时
FormClosed 在关闭后发生,已经关闭,但尚未交还内存控制权
之所以要这么安排,是为了让你有机会让你干预系统的默认行为
你可在 FormClosing 时反悔,让窗口不再关闭
你可在 FormClosed 时保存现场
closing可以弹出个确认是否关闭
closed在彻底关闭后处理掉线程资源什么的
FormClosing函数可以取消关闭窗口
FormClosed函数不能取消关闭窗口
private void form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show("你确定要关闭此窗体么?","关闭提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information);//触发事件进行提示
if (dr == DialogResult.No)
{
e.Cancel = true;//就不退了
}
else {
e.Cancel = false;//退了
}
}
三:如果在button1_Click函数体中写form1_FormClosing(null,null);则会执行form1_FormClosing函数中执行的东西,但是不会把窗口关闭。
如果使用FormClosingEventHandler,可以实现挂载,比如在formLoad函数中添加this.FormClosing += new FormClosingEventHandler(this.button1_Click);可以实现当关闭窗口的时候,执行完formClosing函数的内容后执行button1_Click的内容。
四:winform中datatable添加行和列:添加列两种方式:
dt.Columns.Add("Name", typeof(string)); //数据类型为 文本
DataColumn age = new DataColumn("Age", typeof(Int32)); //数据类型为 整形 DataColumn Time = new DataColumn("Time", typeof(DateTime)); //数据类型为 时间 dt.Columns.Add(age); dt.Columns.Add(Time);
添加行:
//1、通过行框架添加 dt.Rows.Add("李四",25,DateTime.Now);//Add你们参数的数据顺序要和dt中的列顺对应
DataRow dr1 = dt.NewRow(); dt.Rows.Add(dr1); //2、添加空行 dt.Rows.Add(); //3、添加数据行 DataRow dr2 = dt.NewRow(); dr2[0] = "张三"; //通过索引赋值 dr2[1] = 23; dr2["Time"] = DateTime.Now;//通过名称赋值 dt.Rows.Add(dr2);
/添加一新列,其值为默认值 DataColumn dc2 = new DataColumn("Sex", typeof(string)); dc2.DefaultValue = "男"; dc2.AllowDBNull = false;//这在创建表的时候,起作用,在为已有表新增列的时候,不起作用 vTable.Columns.Add(dc2);
假设dt是从数据库中直接读取的结果,返回一个datatable,可以使用dt.select 进行查询和模糊查询
DataRow[] drArr1 = dt.Select("C1 LIKE 'abc%'");//模糊查询(如果的多条件筛选,可以加 and 或 or ) DataRow[] drArr2 = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC");//另一种模糊查询的方法 DataRow[] drArr3 = dt.Select("C1='abc'", "C2 DESC");//排序
注意:datatable中的clone方法,是复制表的结构,不复制内容
DataTable dtNew1 = tbldatas.Clone();
for (int i = 0; i < dtArr.Length; i++)
{
dtNew1.ImportRow(dtArr[i]);//使用ImportRow将select选出的datarow数组放到新的datatable中
}
下面这一行代码是将datatable中的指定列提取出来放在一个新的datatable中
DataTable dtNew = tbldatas.DefaultView.ToTable(false, new string[] { "id", "name" });
下面是按照datatable中的指定列排序:
DataTable dtCopy = dt.Copy();
DataView dv = dt.DefaultView;
dv.Sort = "ID";
dtCopy = dv.ToTable();
(http://www.cnblogs.com/vaevvaev/p/6899165.html)
五:往数据库插入数据提示“将截断字符串或二进制数据”的错误:原因是数据库中表中的列定义的长度太小比如varchar(10),而datatable中的大小太大,从而出现将截断的错误