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());
}
}
}
测试结果:
运行程序,点击树视图的根节点“+”号,可查看电脑磁盘:
继续点击子目录,即可查看该磁盘(文件夹)下的所有文件: