最近一段时间在做一个新的小项目,虽然整体来说不是很难,但是还是遇到几个自己之前没做到的功能,琢磨了半天才弄出来,现记录下来了以备以后用的上
1.多屏显示功能
一开始要实现这个的时候觉的这个真的好高大上,但是当完成之后发现,其实这些微软都帮我们封装好了
Screen[] sc;//显示器
sc = Screen.AllScreens;
this.FormBorderStyle = FormBorderStyle.None; //无边框全屏显示
this.StartPosition = FormStartPosition.Manual;
this.Location = new Point(sc[1].Bounds.Left, sc[1].Bounds.Top);//sc[1]表示的是第二个显示器只需要修改里面的索引就可以了,0表示第一个,一般也不用设,主界面就是,第二个是1,以此类推
this.WindowState = FormWindowState.Maximized;
就只需要这几行代码就可以,控制是在哪个显示器里的,就在sc[1]这个来设置,我有完整的实例代码已经上传,可以下载下来看看,需要注意的是: 如果你的电脑没有第二个显示器,而你这个窗口设置了在第二个显示器显示的话,就会报错。
2.后台运行系统托盘功能
这个功能我这边是一打开不显示主界面直接在后台运行,然后在系统托盘处有一个小图片可以操作就可以了,这边有个注意的地方,如果要一上来直接后台运行,就不能把隐藏本窗体的代码写在load事件里面,要写在Shown事件里面才能实现
private void Form1_Shown(object sender, EventArgs e)
{
this.Hide();//隐藏本窗体
}
实现系统托盘功能需要先将窗体里面的 ShowInTaskbar属性设置成 False,然后拖一个 notifyIcon控件跟 contextMenuStrip控件,在将 notifyIcon控件里的 ContextMenuStrip属性选择这个 contextMenuStrip控件的name,这样就实现了右击小图标出现菜单, 注意,notifyIcon控件里的ICON属性必须添加小图标,不然系统托盘处,你就不知道哪个是你的程序
3excel表格上传导入功能
这个一般用的是比较多的,批量上传可以大大的加快上传到数据库中的效率
首先需要获得整个excel文件的全路劲用openFileDialog就可以,整个的文件路径就可以得到,代码如下
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//文件过滤器,指定选择的只能是后缀xls的文件
openFileDialog1.Filter = "Microsoft Excel files(*.xls)|*.xls;*.xlsx";
openFileDialog1.ShowHelp = true;
openFileDialog1.RestoreDirectory = true;
openFileDialog1.Multiselect = false;
openFileDialog1.FilterIndex = 1;
// 打开 "打开文件对话框",并将结果保存在result里。
DialogResult result = openFileDialog1.ShowDialog();
//如果用户选择"确定"
if (result == DialogResult.OK)
{
//打开文件对话框的文件名保存在MyExcelAll(取出来的是一个完整的路径)
MyExcel = openFileDialog1.FileName;
this.textBox1.Text = MyExcel;//将文件的全路径显示在文本框里
}
}
然后再将整个表格里的数据导入到数据库中,这里需要注意的是,表格必须是你规定好的代码如下
private void button2_Click(object sender, EventArgs e)
{
OleDbConnection conn;
try
{
bool bl = true;
//如果表格是office2004版本的就用这个
// string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
//如果表格是office2007版本的就用这个
conn = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + MyExcel + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'");
conn.Open();
string sql = "select * from [Sheet1$]";
OleDbCommand mycommand = new OleDbCommand(sql, conn);
OleDbDataAdapter myadapter = new OleDbDataAdapter(sql, conn);
DataSet myset = new DataSet();
myadapter.Fill(myset);
foreach (DataRow mdr in myset.Tables[0].Rows)//循环读取第一个表格里面的数据
{
DBHelp help = new DBHelp();
string sql_ = "insert into number_(number_one,number_two) values('" + mdr[0].ToString() + "','" + mdr[1].ToString() + "')";
if (help.ExecQuey(sql_) > 0)
{
}
else
{
bl = false;
}
}
if (!bl)
{
MessageBox.Show("导入失败!");
}
else
{
MessageBox.Show("导入成功!");
}
loding();
}
catch (Exception myex)
{
MessageBox.Show(myex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
我这里给上面每个功能都做了一个小案例,可以下载下来,调试着看,跟容易知道怎么做!