2014-01-07 43 views
1

我一直在编码使用Windows窗体的Minecraft发射器。如果它没有检测到,我就下载启动程序。 EXE的变量被称为_exe(我为它使用了一个get-set)。我做了另一个表单下载启动异步(进度条,谈论美学!)。在Program.cs,所有的大事情发生(其中Main()是),我有一种方法称为Boot()加载所有设置和检查丢失的文件(Minecraft.exe,Launch.bat(设置环境变量%APPDATA%,因为我没有想法如何设置环境变量并启动Minecraft)当DownloadLauncher窗体初始化时,它告诉我它正在下载到启动程序所在的文件夹(这是默认选项),尽管在设置中它已经设置为使用原始文件%APPDATA%文件夹中。我知道这是正在申报无数次对象的情况下,但我不知道如何解决它,因为它是在这样一个大的规模。
Program.csDownloadLauncher.cs
问题是变量在第23行不应该是.minecraft\Minecraft.exe(%APPDATA%)\.minecraft\Minecraft.exe同一个对象在不同的​​类中?

+0

顺便说一句,这是我第一次使用WinForms :) – Ilan321

+1

即使我不赞成它,你总是可以继续并将该变量作为公共属性存储在静态类中。它可以被“共享”。 请问为什么你要编程一个我的世界的发射器,如果那里已经有一个非常好的发射器? – Eisenhorn

+0

我打算让它安装mods等。你能提供一个公共财产的例子吗? – Ilan321

回答

2
public static class VariableStore 
{ 
    public static string MinecraftPath 
    { 
     get; 
     set; 
    } 
} 

我们 '设置' 您的变量,你会打电话:

VariableStore.MinecraftPath = "%appdata%\\roaming\\.minecraft"; 

你访问它以同样的方式:

System.Diagnostics.Debug.Print(VariableStore.MinecraftPath); 

请记住,这是一个非常粗略的解决方案。另外,如果你打算通过你的项目(这听起来像一个非常好的学习项目),我建议你阅读一些关于WinForms的更多内容,以及在你进一步学习之前它们是如何工作的,已经有多个设计缺陷。不要放弃,祝你好运! :)

+0

什么样的设计缺陷? o-o – Ilan321

+1

例如您的公共和私有变量的命名方案。如果使用的是超低倍镜,它们几乎总是用于私人而不是公共变量。另外,尝试启动并使用属性而不是公共变量。它们不仅增加了更多的灵活性,而且它也是一个很好的设计选择。 – Eisenhorn

+0

哦,顺便说一句,你可以通过调用'Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)':)来轻松地检索用户的appdata目录。 – Eisenhorn

相关问题