2014-01-07 41 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

相關問題