高中的时候开始接触的VB6,那都是十几年前的事了,半年前因为工作需要接触了C#,虽然VB6现在基本已经忘差不多了,更别提再用它来做个什么东西,更何况很多人心中VB6如此老旧估计也淘汰差不多了,但如果之前没有过VB基础,叫我直接跳到C#做Windows桌面应用,完全自学的话怕是要花不少功夫。还好知道VB中至少有些特性在C#肯定也是有的,只是实现方法不一样而已。写个笔记,记录一下,以免遗忘。
获取应用启动目录及自身文件名信息的方法:
//总是获得一个以“\”结尾的应用运行路径;
textBox1.Text = AppDomain.CurrentDomain.BaseDirectory;
//获取一个应用运行的路径,如果在根目录,则以“\”结尾,否则结尾不带“\”
textBox1.Text = Environment.CurrentDirectory;
textBox1.Text = System.IO.Directory.GetCurrentDirectory();
//获取一个应用运行的路径,如果在根目录,则以“\”结尾,否则结尾不带“\”,仅用于WindowForm应用程序
textBox1.Text = Application.StartupPath;
//获取当前应用的exe文件名(不含路径),如:WindowsFormsApp1.exe
textBox1.Text = AppDomain.CurrentDomain.FriendlyName;
//获取一个包含应用程序exe文件名的完整路径,只能在WindowForm应用程序中使用
textBox1.Text = Application.ExecutablePath;
//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称
textBox1.Text = Application.ExecutablePath;
避免应用重复启动的方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool ret;
Mutex mutex = new Mutex(true, Application.ProductName, out ret);
if (ret)
{
Application.Run(new Form1());
}
else
{
MessageBox.Show("该程序已经启动", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
如果报错,就看看命名空间是否正确,默认项目里面的using System.Threading.Tasks改成using System.Threading就可以了。