【C#】实验8

文章目录

s8-1

设计项目s8-1。设计一个窗体,上面布置一个Picture控件和两个命令按钮(标题为“装载”和“保存”),试按以下功能要求完成设计:
(1) 程序运行,单击“装载”按钮,弹出一个文件打开对话框,从中选择一个图像文件,确定后该图像文件内容被装载到Picture控件内显示;
(2)Picture控件有图像输出的情况下,单击“保存”按钮,弹出一个文件夹选择对话框,从中选择有效文件夹,确定后Picture控件内容会被保存到该文件夹里,文件命名为pNew.jpg(或bmp)。

窗体设计:
在这里插入图片描述
MainForn.cs:

/*
 * 作者:JeronZhou
 * 日期: 2021-10-21
 * 功能:装载和保存图片
 */

using System;
using System.Linq;
using System.Windows.Forms;

namespace s8_1
{
	public partial class MainForm : Form
	{
		public MainForm()
		{
			InitializeComponent();
		}
		public string pathname = string.Empty; 
		void Button1Click(object sender, EventArgs e)  //装载图片
		{
			OpenFileDialog file = new OpenFileDialog();
            file.InitialDirectory = ".";
            file.Filter = "所有文件(*.*)|*.*";
            file.ShowDialog();
            if (file.FileName != string.Empty)
            {
                try
                {
                    pathname = file.FileName;   //获取文件的绝对路径
                    pictureBox1.Load(pathname);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
		}
		void Button2Click(object sender, EventArgs e)
		{
			SaveFileDialog save = new SaveFileDialog();
            save.ShowDialog();
            if (save.FileName != string.Empty)
            {
                pictureBox1.Image.Save(save.FileName);
            } 
		}
	}
}

Program.cs:

/*
 * 作者:JeronZhou
 * 日期: 2021-10-21
 * 功能:装载和保存图片
 */

using System;
using System.Windows.Forms;

namespace s8_1
{
	internal sealed class Program
	{
		[STAThread]
		private static void Main(string[] args)
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new MainForm());
		}
	}
}

测试结果:
运行程序,初始界面如下所示:
在这里插入图片描述
点击“装载”按钮,弹出文件选择界面:
在这里插入图片描述
选择一张图片“Picture.jpg”,即可在界面中装载此图片:
在这里插入图片描述
点击“保存”按钮,选择保存至桌面路径,并命名为NewPicture.jpg:
在这里插入图片描述
点击“保存”按钮后,即可在桌面上发现图片NewPicture.jpg被保存:

s8-2

设计项目s8-2。设计一个程序,获取所有逻辑盘并列出硬盘所有目录。获取系统中的所有逻辑盘,如果是软驱和光驱,则仅向树视图中添加节点,如果是硬盘,则除了向树视图中添加节点外还要列举出它的目录。

窗体设计:
在这里插入图片描述
MainForm.cs:

/*
 * 作者:JeronZhou
 * 日期: 2021-10-21
 * 功能:获取所有逻辑盘并列出硬盘所有目录
 */

using System;
using System.Linq;
using System.Windows.Forms;
using System.IO;

namespace s8_2
{
	public partial class MainForm : Form
	{
		public MainForm()
		{
			InitializeComponent();
			treeView1.BeginUpdate();
            EnumDrivers();
            treeView1.EndUpdate();
		}
		public void EnumDrivers()
        {
            TreeNode rootNode = new TreeNode();
            rootNode.Text = "此电脑";
            treeView1.Nodes.Add(rootNode);
            treeView1.SelectedNode = rootNode.FirstNode;
            DriveInfo[] allDrives = DriveInfo.GetDrives();
            int i=0;
            try
            {
                foreach (DriveInfo d in allDrives)
                {
                    TreeNode tn = new TreeNode(d.Name);
                    tn.Tag = d.RootDirectory.FullName;
                    treeView1.Nodes[0].Nodes.Add(tn);
                    treeView1.Nodes[0].Nodes[i].Text = d.Name;
                    ShowDirsAndFiles(tn);
                    i++;
                }
            }
            catch(Exception) {}
        }
		public void ShowDirsAndFiles(TreeNode tn)
        {
            tn.Nodes.Clear();
            try
            {
                DirectoryInfo DirInfo = new DirectoryInfo(tn.Tag.ToString());
                if (!DirInfo.Exists)
                {
                    return;
                }
                else
                {
                    DirectoryInfo[] Dirs;
                    FileInfo[] files;
                    try
                    {
                        Dirs = DirInfo.GetDirectories();
                        files = DirInfo.GetFiles();
                    }
                    catch(Exception e)
                    {
                        return;
                    }
                    foreach (DirectoryInfo Dir in Dirs)
                    {
                        TreeNode dir = new TreeNode(Dir.Name);
                        dir.Tag = Dir.FullName;
                        tn.Nodes.Add(dir);
                    }
                    foreach (FileInfo file in files)
                    {
                        TreeNode fileName = new TreeNode(file.Name);
                        tn.Nodes.Add(fileName);
                    }
                }
            }
            catch(Exception) {}
        }
		public void treeViewDirectory_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            treeView1.BeginUpdate();
            foreach (TreeNode tn in e.Node.Nodes)
            {
                ShowDirsAndFiles(tn);
            }
            treeView1.EndUpdate();
        }
	}
}

Program.cs:

/*
 * 作者:JeronZhou
 * 日期: 2021-10-21
 * 功能:获取所有逻辑盘并列出硬盘所有目录
 */

using System;
using System.Windows.Forms;

namespace s8_2
{
	internal sealed class Program
	{
		[STAThread]
		private static void Main(string[] args)
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new MainForm());
		}
	}
}

测试结果:
运行程序,点击树视图的根节点“+”号,可查看电脑磁盘:
在这里插入图片描述
继续点击子目录,即可查看该磁盘(文件夹)下的所有文件:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeron Zhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值