我的程序根据程序是否第一次运行来设置其显示.为了确定程序是否第一次运行我当前正在使用a
//this boolean exists within my programs settings
Setting boolean FirstRun = True;
Run Code Online (Sandbox Code Playgroud)
当程序运行时,它调用一个方法来检查该bool值的状态并相应地采取行动:
if(Properties.Settings.FirstRun == true)
{ lblGreetings.Text = "Welcome New User";
//Change the value since the program has run once now
Properties.Settings.FirstRun = false;
Properties.Settings.Save(); }
else
{ lblGreetings.Text = "Welcome Back User"; }
Run Code Online (Sandbox Code Playgroud)
它似乎工作得非常有效,但是如果.exe文件被移动并从一个新位置启动它认为它是第一次运行,我担心我是以一种混乱的方式这样做,也许存在更高效测试首次运行的程序的方式.有一个更好的方法吗?
似乎你的问题实际上是,如果你移动executable到同一台 PC 上的另一个位置/文件夹,它会以某种方式丢失有关它已经运行至少一次这一事实的信息.
使用UserSettings,on Properties.Settings.Default.FirstRun应解决您的问题.
像这样的东西,伪代码:
if(Properties.Settings.Default.FirstRun == true)
{ lblGreetings.Text = "Welcome New User";
//Change the value since the program has run once now
Properties.Settings.Default.FirstRun = false;
Properties.Settings.Default.Save(); }
else
{ lblGreetings.Text = "Welcome Back User"; }
Run Code Online (Sandbox Code Playgroud)
看看这个示例如何以更详细的方式实现它.
由于您的问题似乎与启动应用程序的每个用户有关,因此您应该设计每用户解决方案.
使用Properties.Settings实际上可以正常工作并且只要有问题的设置是特定于用户的.
但是,如果不希望或不适合您的应用程序,您还可以将特定于用户的条目写入注册表.
例如:
const string REGISTRY_KEY = @"HKEY_CURRENT_USER\MyApplication";
const string REGISTY_VALUE = "FirstRun";
if (Convert.ToInt32(Microsoft.Win32.Registry.GetValue(REGISTRY_KEY, REGISTY_VALUE, 0)) == 0)
{
lblGreetings.Text = "Welcome New User";
//Change the value since the program has run once now
Microsoft.Win32.Registry.SetValue(REGISTRY_KEY, REGISTY_VALUE, 1, Microsoft.Win32.RegistryValueKind.DWord);
}
else
{
lblGreetings.Text = "Welcome Back User";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12382 次 |
| 最近记录: |