后台管理其中有一个添加歌手信息和歌曲信息的窗体要点击按钮并上传文件,因为对那些文件流什么的不懂,所以用了老师教的最简单的判断方法,但此方法只是按后缀名判断文件的样式,如果后缀名乱改就不行了!

此时需要用到的控件是OpenFileDialog,OpenFileDialog也是个类,如要用此类必须先引用Using Sysetem.IO命名空间!点击浏览按钮事件之后

string name = "";         string PhotoUrl = "";

private void btnBrowse_Click(object sender, EventArgs e)

{

OpenDialog.Filter = "(*.jpg)|*.jpg";//这段代码必须在ShowDialog打开之前才有用!

if (OpenDialog.ShowDialog() == DialogResult.OK)//这段代码可以直接浏览打开本地计算机文件夹里的文件,并且判断你选中一个文件点击了打开按钮!

{   name = OpenDialog.SafeFileName;//此为相对路径,拿我项目里照片的相对路径做例子,也就是:李宇春.JPG!

PhotoUrl = OpenDialog.FileName;//此代码为绝对路径,拿我照片的绝对路径做例子,意思就是:H:\c#窗口应用程序\MyKTV最终版\singerPhoto\李宇春.jpg

Image img = new Bitmap(PhotoUrl);

picBrowse.Image = img; //把照片地址放入控件就可以显示了也可以用image.FromFile();

}

}

//

OpenDialog.Filter = "(*.jpg),(*.png),(*.gif)|*.jpg,*.png,*.gif";会在你浏览的文本框旁多显示一个下拉框“()”括号里是显示给用户看的可以加载的类型,“|”后的是系统要解析的|前后腰对应如果要再添加一个下拉框显示全部可以这么写OpenDialog.Filter = "(*.jpg),(*.png),(*.gif)|*.jpg,*.png,*.gif|(*.全部)|*.*";

//

这个只是取到你未添加到歌手信息里的照片原路径,下面再用查询语句查到你数据库里照片目录的路径+上面取到的照片的相对路径就可以把别的目录下的照片复制到你的程序目录下!  string SingerUrl = cmd.ExecuteScalar().ToString();//数据库取到的程序照片目录的路径
       File.Copy(PhotoUrl, SingerUrl + "\\" + name, true); //因为C#里“\”为转义字符所以不能直接显示此时还可以用String.Format()来联接路径,这里的true是布尔类型参数的一个值,如果没有True的话,你的目标路径如有相同的照片是会报错的,有True的话,如果有相同就直接覆盖,不再提示!

============================================================================

还有一个FolderBrowserDialog控件,此控件使用时也需要先引用Using Sysetem.IO命名空间

if (FolderBrowserDialog.ShowDialog() == DialogResult.OK)

{

tbxNewWay.Text = FolderBrowserDialog.SelectedPath;//把选中的路径值赋给这个文本框

}

然后       Directory.Delete(tbxNewWay.Text);
             Directory.Move(tbxNowWay.Text, tbxNewWay.Text);

//注释

Directory.Move(string sourceDirName,string destDirName)
Directory.Move(string sourceDirName,string destDirName)方法是把原文件夹里的东西转移到另一个空的文件夹里,并且删除原文件夹.
destDirName目标路径,必须是还没有被创建的文件夹,所以得 Directory.Move(tbxNowWay.Text, tbxNewWay.Text + "\\你想转移的新文件夹");手动给创建个文件名,而且这个文件名必须是不存在的。如果程序重复调试文件夹名字没换是会报错的.
如果不想那么麻烦,使用前加上一句Directory.Delete(tbxNewWay.Text);先把选中的文件夹给删除了,再Directory.Move(string sourceDirName,string destDirName)就可以把文件成功转移了!~

反斜杠

\

,在

windows

系统中用来表示目录。

C#Windows窗体应用程序MyKTV项目的更多相关文章

  1. API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别

    [原]API.Win32 SDK.Win32项目.MFC.Windows窗体应用程序的区别 首先来看一下每一个术语的定义: API:Application Programming Interface. ...

  2. Windows窗体应用程序(非Console)使用libuv实现简单的异步WEB服务器

    libuv是一个很强大的异步处理框架(严格意义上不能叫框架,其实就是一组异步函数库,当然框架这东西有各种各样的定义和理解_^...),最初的的目的是用于NODEJS的异步处理,不过因为它是一个独立的项 ...

  3. C#开发Windows窗体应用程序的步骤

    使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...

  4. 第一章 C#入门(Windows窗体应用程序)(二)

    C#窗体应用程序(二) [案例]设计登录界面,效果如下: [案例实现步骤] 1.新建项目(Windows控制台应用程序 文件→新建→项目:选择“项目类型”为Visual C#,“模板”为Windows ...

  5. 第一章 C#入门 (Windows窗体应用程序)(一)

    我的第一个窗体应用程序(一) [案例说明]  在文本框中显示一行文字“Hello C#!”,单击[显示]按钮后在文本框中显示文字:单击[清除]按钮后清除文本框中的内容. [案例实现步骤] 1.新建项目 ...

  6. 第一章 C#入门 (Windows窗体应用程序)(三)

    [案例] 编写一个Windows窗体应用程序,窗体上有一个文本框和两个按钮([显示]和[清除]按钮). 单击[显示]时,文本框的背景变为蓝色并且居中显示“努力学习C#”: 单击[清除]按钮,文本框的背 ...

  7. Windows窗体应用程序常用的几个类的属性、方法以及事件

    System.Diagnostics.Process 属性 public bool EnableRaisingEvents { get; set; }//获取或设置在进程终止时是否应激发 Exited ...

  8. C#windows窗体应用程序如何自适应大小

    用C#的windows窗体应用程序做界面十分轻松,但是系统默认是没有让控件跟随窗体的大小改变而已改变的.所以需要我们手动去设置让窗体控件随着窗体的大小改变而改变.所以我们只需要将控件选择 然后把Anc ...

  9. 第三章 C#程序结构[3.2 选择结构的应用(Windows窗体应用程序)(四)]

    [案例]设计一个顾客选购商品的系统.其中,顾客身份有两类,一类是VIP,另一类是普通会员:商品种类有3种.分别是上衣.裤子和鞋子.其中,VIP享受8折优惠和商店赠送的礼品,而普通会员都不享受.单击[确 ...

随机推荐

  1. 接口测试从未如此简单 - Postman (Chrome插件)【转】

    一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 注:转载请注明出处http://www.cnblogs.com/wade ...

  2. phpcms标签整理_当前栏目调用

    phpcms标签整理_当前栏目调用 转载 **//SQL语句调用: {pc:get sql="select * from phpcms_category where catid in($ca ...

  3. 例题.点击按钮显示内容+弹窗效果+ajax

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. ubuntu Nodejs和npm的安装

     cnpm install -g XXX errors :  npm i --registry=https://registry.npm.taobao.org     标签: nodejsnpm 20 ...

  5. Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)

    一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...

  6. JS性能消耗在哪里?

    内部原因:构造,递归,循环,拷贝,动态执行,字符串操作等   1.过度的封装(过多的创建“庞大的”对象,但是如果在允许的条件下,面向对象的封装是可以提高维护性,而且符合我们的高内聚低耦合原则): 2. ...

  7. Android 代码中文字在手机上显示乱码问题解决方法

    在学习Android过程中,用于测试时发现,代码中的中文在真机上会显示乱码, 网上查阅了些资料,参考如下: http://www.androidchina.net/3024.html http://b ...

  8. MongoDB直接执行js脚本

    有时候很大一段命令要执行,中间有错就得重新写,这样超麻烦的,不妨存放于js文件里,然后通过shell命令执行,重复利用率高,修改方便. 比如创建test.js print('=========WECO ...

  9. sqlserver 视图能否有变量

    不能,sqlserver 视图一般不能有变量,也不能带存储过程

  10. Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

    通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...