目录
项目结构
主类和命名空间
构造函数和析构函数
初始化组件 (InitializeComponent)
按钮点击事件处理程序
主程序入口点
项目截图:
完整代码:
项目结构
这个项目是一个简单的C# Windows Forms应用程序,获取指定文件的根信息,包含一个主窗体 Form1 和一些控件(标签、文本框、按钮等)。整个项目的主要功能是让用户选择文件或文件夹,并提供了一些关于这些路径的信息。
主类和命名空间
命名空间: Files
类: Form1 继承自 System.Windows.Forms.Form
成员变量
Label label1: 显示提示信息的标签。
TextBox textBox1: 用户输入或显示文件/文件夹路径的文本框。
Button button1, button2, button3, button4: 四个按钮分别用于不同的操作。
FolderBrowserDialog folderBrowserDialog1: 文件夹浏览对话框。
OpenFileDialog openFileDialog1: 文件打开对话框。
IContainer components: 窗体设计器使用的容器对象。
构造函数和析构函数
构造函数: 调用 InitializeComponent() 方法来初始化窗体及其控件。
析构函数: 如果 components 不为空,则释放其资源。
初始化组件 (InitializeComponent)
这部分代码由Windows Forms设计器生成,主要负责设置各个控件的位置、大小和其他属性。例如:
设置 label1 的位置、大小和文本内容。
设置 textBox1 的初始值为 "C:\\Windows"。
设置每个按钮的位置、大小和点击事件处理程序。
按钮点击事件处理程序
button1_Click:当用户点击“浏览文件夹”按钮时,会弹出一个文件夹选择对话框。如果用户选择了某个文件夹并确认,所选文件夹的路径会被填入 textBox1 中。
private void button1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog1.SelectedPath; } }
button2_Click:当用户点击“浏览文件”按钮时,会弹出一个文件打开对话框。如果用户选择了某个文件并确认,所选文件的路径会被填入 textBox1 中。
private void button2_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; } }
button3_Click:当用户点击“显示根信息”按钮时,会获取当前路径所在的驱动器信息,并通过消息框显示出来。这包括驱动器类型、总空间和可用空间。
private void button3_Click(object sender, EventArgs e) { string path = textBox1.Text; try { DriveInfo driveInfo = new DriveInfo(Path.GetPathRoot(path)); MessageBox.Show( $ "驱动器类型: {driveInfo.DriveType}" + $ "总空间: {driveInfo.TotalSize} bytes " + $ "可用空间: {driveInfo.AvailableFreeSpace} bytes"); } catch (Exception ex) { MessageBox.Show("无法获取驱动器信息: " + ex.Message); } }
button4_Click:当用户点击“父目录信息”按钮时,会将 textBox1 中的路径更改为该路径的父目录路径。如果已经是根目录,则弹出提示信息。
private void button4_Click(object sender, EventArgs e) { string path = textBox1.Text; try { string parentDir = Path.GetDirectoryName(path); if (!string.IsNullOrEmpty(parentDir)) { textBox1.Text = parentDir; } else { MessageBox.Show("当前路径已是根目录或无效路径。"); } } catch (Exception ex) { MessageBox.Show("无法获取父目录信息: " + ex.Message); } }
主程序入口点
- 在
Program
类中定义了静态方法Main
,这是应用程序的入口点。调用Application.Run(new Form1())
来启动应用程序并显示主窗体Form1
。
static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
项目截图:
完整代码:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Data; using System.IO; using System.Windows.Forms; namespace Files { public class Form1 : System.Windows.Forms.Form { private Label label1; private TextBox textBox1; private Button button1; private FolderBrowserDialog folderBrowserDialog1; private Button button2; private Button button3; private OpenFileDialog openFileDialog1; private Button button4; private IContainer components = null; public Form1() { InitializeComponent(); } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows 窗体设计器生成的代码 private void InitializeComponent() { this.label1 = new Label(); this.textBox1 = new TextBox(); this.button1 = new Button(); this.folderBrowserDialog1 = new FolderBrowserDialog(); this.button2 = new Button(); this.button3 = new Button(); this.openFileDialog1 = new OpenFileDialog(); this.button4 = new Button(); this.SuspendLayout(); // label1 this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(15, 22); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(159, 13); this.label1.TabIndex = 0; this.label1.Text = "文件或文件夹全路径名:"; // textBox1 this.textBox1.Location = new System.Drawing.Point(17, 57); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(320, 20); this.textBox1.TabIndex = 1; this.textBox1.Text = @"C:\Windows"; // button1 this.button1.Location = new System.Drawing.Point(17, 104); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(80, 23); this.button1.TabIndex = 2; this.button1.Text = "浏览文件夹"; this.button1.Click += new EventHandler(this.button1_Click); // button2 this.button2.Location = new System.Drawing.Point(97, 104); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(80, 23); this.button2.TabIndex = 5; this.button2.Text = "浏览文件"; this.button2.Click += new EventHandler(this.button2_Click); // button3 this.button3.Location = new System.Drawing.Point(177, 104); this.button3.Name = "button3"; this.button3.Size = new System.Drawing.Size(80, 23); this.button3.TabIndex = 6; this.button3.Text = "显示根信息"; this.button3.Click += new EventHandler(this.button3_Click); // button4 this.button4.Location = new System.Drawing.Point(257, 104); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(80, 23); this.button4.TabIndex = 7; this.button4.Text = "父目录信息"; this.button4.Click += new EventHandler(this.button4_Click); // Form1 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(400, 175); this.Controls.Add(this.button4); this.Controls.Add(this.button3); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Controls.Add(this.textBox1); this.Controls.Add(this.label1); this.FormBorderStyle = FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Form1"; this.StartPosition = FormStartPosition.CenterScreen; this.Text = "文件操作示例"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private void button1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog1.SelectedPath; } } private void button2_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; } } private void button3_Click(object sender, EventArgs e) { string path = textBox1.Text; try { DriveInfo driveInfo = new DriveInfo(Path.GetPathRoot(path)); MessageBox.Show($"驱动器类型: {driveInfo.DriveType}\n" + $"总空间: {driveInfo.TotalSize} bytes\n" + $"可用空间: {driveInfo.AvailableFreeSpace} bytes"); } catch (Exception ex) { MessageBox.Show("无法获取驱动器信息: " + ex.Message); } } private void button4_Click(object sender, EventArgs e) { string path = textBox1.Text; try { string parentDir = Path.GetDirectoryName(path); if (!string.IsNullOrEmpty(parentDir)) { textBox1.Text = parentDir; } else { MessageBox.Show("当前路径已是根目录或无效路径。"); } } catch (Exception ex) { MessageBox.Show("无法获取父目录信息: " + ex.Message); } } } static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
这是个简单的Windows Forms应用程序展示了如何使用基本的Windows Forms控件(如标签、文本框、按钮)来构建一个交互式界面。通过按钮点击事件处理程序,实现了文件夹和文件的选择,以及获取和显示路径相关信息的功能。