编写了一个登录框,需要在用户按回车时进行提交,可以为输入框添加KeyUp事件函数,然后在函数内写

if (e.KeyCode == Keys.Control || e.KeyCode == Keys.Enter)
{
    //要执行的代码
}

测试发现如果使用了MessageBox.Show(),在弹出窗口上按回车确认也会再次触发这个事件,我的解决方法是弹窗前先清空输入框内容,然后在事件函数执行时判断一下输入框是否为空

if (this.InputBox.Text.Count() != 0)
{
    if (e.KeyCode == Keys.Control || e.KeyCode == Keys.Enter)
    {
        //要执行的代码
        this.InputBox.Text = String.Empty;
    }
}

String inputString = "要处理的字符串";
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.UTF8.GetBytes(inputString);
byte[] md5Data = md5.ComputeHash(data, 0, data.Length);
md5.Clear();
String resule= String.Empty;
for (int i = 0; i < md5Data.Length; i++)
{
    resule += System.Convert.ToString(md5Data[i], 16).PadLeft(2, '0');
}
resule= resule.PadLeft(32, '0');

MessageBox.Show(resule);

//获取执行目录
String startPath = System.Windows.Forms.Application.StartupPath;

//获取执行盘符
String startDisk = System.Windows.Forms.Application.StartupPath.Substring(0, 1);

创建一个7-Zip进程解压文件:

System.Diagnostics.Process unZipProcess = new System.Diagnostics.Process();
unZipProcess.StartInfo.FileName = @"C:\7zG.exe";                                   //执行文件
unZipProcess.StartInfo.Arguments = " x \"压缩文件\" -o\"输出路径\" -aoa";            //执行参数
unZipProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //表示隐藏窗口
unZipProcess.Start();                                        //开始执行
unZipProcess.WaitForExit();                                  //等待进程结束
//unZipProcess.WaitForExit(1000);                            //等待进程结束,设置等待时间最多为1000毫秒
//unZipProcess.Kill();                                       //强制结束进程
unZipProcess.Close();                                        //释放资源

执行CMD命令类似,多了几项设置,释义忘了,可以用VS鼠标悬停看说明

System.Diagnostics.Process cmdProcess = new System.Diagnostics.Process();
cmdProcess.StartInfo.FileName = "cmd.exe";
cmdProcess.StartInfo.UseShellExecute = false;
cmdProcess.StartInfo.RedirectStandardInput = true;
cmdProcess.StartInfo.RedirectStandardOutput = true;
cmdProcess.StartInfo.RedirectStandardError = true;

//隐藏窗口执行
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.Start();

//执行命令,在命令后面带上exit可以让cmd执行完成后退出,否则执行`WaitForExit()`且不指定超时时间会假死
cmdProcess.StandardInput.WriteLine("ping 127.0.0.1&exit");

//可以多次调用此方法来执行多条命令,执行完所有命令后再执行exit
//但要注意每次提交完命令要等待一定时间再执行下一个,否则会失败
//cmdProcess.StandardInput.WriteLine("ipconfig /release");
//System.Threading.Thread.Sleep(500);
//cmdProcess.StandardInput.WriteLine("ipconfig /renew");
//System.Threading.Thread.Sleep(500);
//cmdProcess.StandardInput.WriteLine("exit");

cmdProcess.StandardInput.AutoFlush = true;

//获取返回值
String OutputData = cmdProcess.StandardOutput.ReadToEnd();

//等待进程退出,可以指定超时时间
cmdProcess.WaitForExit();

//关闭
cmdProcess.Close();

String stringObject = "Hello";

stringObject.Substring(0, 1);
// 截取字符串第一位

stringObject.Substring(StringObject.Lenght - 1, 1);
// 截取字符串最后一位

最近要做一个文件加密、权限控制方面的软件,查询得知的一个资源管理器的古老bug。
将目录命名为conauxcom1(1-9均可)、lpt1(1-9均可)、prn即可让资源管理器无法删除或操作其中的文件。

创建方法:
1、使用CMD执行mkdir "F:/con//"进行创建。
2、使用Git的MinGW64之类的命令行的mkdir命令直接创建。

使用的时候发现个问题,将此写在单击事件函数中,连续点击触发双击事件函数后,原单击事件函数被打断了。

System.Threading.Thread.Sleep(2000);
//等待2000毫秒

namespace TestApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            //默认生成的代码
            InitializeComponent();
    
            //实例化一个Panel控件
            Panel panel1 = new Panel();
    
            //添加至当前窗口下
            this.Controls.Add(panel1);
            
            //若有一个name为Window的组件,需要添加在此组件下,直接使用name作为对象即可
            //Window.Controls.Add(panel1);
    
            panel1.Size = new Size(50, 100);     //设置控件大小
            panel1.Location = new Point(10, 10); //设置控件位置
            panel1.BackColor = Color.Blue;       //设置控件背景颜色
    
            //添加自定义组件,若将组件name设置为FilePanel
            FilePanel filePanel1 = new FilePanel();  //实例化一个FilePanel组件
            this.Controls.Add(filePanel1);           //添加至当前窗口下
        }
    }
}

DialogResult alert = MessageBox.Show("内容", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
if (alert == DialogResult.OK){
    //true
}else{
    //false
}