目录
一、关闭上位机(关闭所有线程,与点击右上角的“X”一个效果)
二、加入各种引用方法(以引入system.management为例)
一、关闭上位机(关闭所有线程,与点击右上角的“X”一个效果)
Application.Exit();
二、加入各种引用方法(以引入system.management为例)
右键项目名称->添加->引用。 在弹出的界面,左侧选择“程序集”–>选择框架,然后查找management即可,在system.management前的框上点击打上勾,点击确定即可。
三、检测组合键弹出对话框,并获取输入内容
a、将窗体属性KeyPreview改成True,如图:
b、给窗体添加KeyDown事件
c、事件中加入代码
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == (Keys.Alt | Keys.Control) && e.KeyCode == Keys.Z)//同时按下Alt+Ctrl+Z
{
string str = Interaction.InputBox("请输入验证码", "请输入验证码", "请输入验证码", -1, -1);
if (str.ToUpper() == "ABC")//输入的是 ABC(不区分大小写),ToUpper()将输入的字母变成大写
{
}
else
{
}
}
}
注:需要添加 using Microsoft.VisualBasic;项目中加入引用参考上述【2】。
四、ini文件读写,文件不存在则创建文件,自动创建文件夹
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
private string IniFilePath;
public static bool Write_ini(string 段, string 键名, string 键值, string 文件路径)
{
/*
[段1]
键名1=键值1
键名2=键值2
[段2]
键名1=键值1
键名2=键值2
*/
try
{
WritePrivateProfileString(段, 键名, 键值, 文件路径);
return true;
}
catch
{
return false;
}
}
public static int Read_ini(string 段, string 键名, string 文件路径, out string value)
{
StringBuilder temp = new StringBuilder(1024);
try
{
int i = GetPrivateProfileString(段, 键名, "", temp, 1024, 文件路径);
value = temp.ToString();
return i;
}
catch
{
value = "Error";
return 0xff;
}
}
void 读配置()
{
IniFilePath = Application.StartupPath + "\\Drivers\\Config.ini";
if (File.Exists(IniFilePath))//存在
{
}
else
{
string 文件夹 = IniFilePath.Substring(0, IniFilePath.LastIndexOf('\\'));
Directory.CreateDirectory(文件夹);//如果文件夹不存在就创建它
File.WriteAllText(IniFilePath, string.Empty, System.Text.Encoding.Unicode); //<--确定创建的是UNICODE文件
}
string 备注名;
int Read授权码 = Read_ini("JDQTEXT", "JDQ1", IniFilePath, out 备注名);
if (Read授权码 > 0)
{ //
textBox1.Text = 备注名;
}
else
{
}
}
void 保存配置()
{
Write_ini("JDQTEXT", "JDQ1", textBox1.Text, IniFilePath);
}
五、多窗体同意界面相互切换与传输数据
1、在项目中添加多个用户窗体
这里我添加了三个用户控件,命名分别为 参数设置、操作界面、时间期限
2、主窗体中添加panel容器用于显示多个窗体,命名为:panel展示多窗体,再添加一个label控件作为中转站,命名为:当前界面
注:panel展示多窗体的尺寸要跟切换展示的窗体尺寸一致,这样可以避免显示丢失等问题。
3、主窗体中添加代码:
public 参数设置 参数设置窗体; //创建用户控件一变量
public 操作界面 操作界面窗体; //创建用户控件二变量
public 时间期限 时间期限窗体; //创建用户控件三变量
参数设置窗体 = new 参数设置(); //实例化参数设置窗体
操作界面窗体 = new 操作界面(); //实例化操作界面窗体
时间期限窗体 = new 时间期限(); //实例化时间期限窗体
4、三个用户控件窗体添加一个汉字表示界面,两个跳转button
5、给项目添加一个类,命名为:Public 类 窗体传数据
6、添加代码,窗体当前显示界面作为传递变量
public static string 窗体当前显示界面;
7、在主界面添加代码:定时器中断和当前界面TextChanged事件
private void 定时器100ms_Tick(object sender, EventArgs e)
{
当前界面.Text = Public_类_窗体传数据.窗体当前显示界面;
}
private void 当前界面_TextChanged(object sender, EventArgs e)
{
switch (当前界面.Text)
{
case "跳转时间期限界面":
时间期限窗体.Show(); //将窗体一进行显示
panel展示多窗体.Controls.Clear(); //清空原容器上的控件
panel展示多窗体.Controls.Add(时间期限窗体); //将窗体一加入容器panel
break;
case "跳转参数设置界面":
参数设置窗体.Show(); //将窗体一进行显示
panel展示多窗体.Controls.Clear(); //清空原容器上的控件
panel展示多窗体.Controls.Add(参数设置窗体); //将窗体一加入容器panel
break;
case "跳转操作界面":
操作界面窗体.Show(); //将窗体一进行显示
panel展示多窗体.Controls.Clear(); //清空原容器上的控件
panel展示多窗体.Controls.Add(操作界面窗体); //将窗体一加入容器panel
break;
}
}
8、参数设置窗体中添加事件代码
private void button1_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转时间期限界面";
}
private void button2_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转操作界面";
}
9、操作界面窗体中添加事件代码
private void button1_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转时间期限界面";
}
private void button2_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转参数设置界面";
}
10、时间期限窗体中添加事件代码
private void button1_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转参数设置界面";
}
private void button2_Click(object sender, EventArgs e)
{
Public_类_窗体传数据.窗体当前显示界面 = "跳转操作界面";
}
完成。