2016-02-25 55 views
1

要求用戶在他使用的設備上鍵入序列號。然後程序使用這個序列號進行所有功能。這樣做是爲了讓用戶可以輕鬆更換所述設備,而無需任何技術幫助 - 只需在應用程序中輸入新的序列號即可。保存在程序啓動時加載的變量(WFA)C#

不過,我已經做到了的方式,用戶需要在序列號的每個程序被打開時輸入,並且它是一種單調乏味。

是否有存儲最後輸入的序列號的方式,以便它加載下一次計劃正在拼命地跑?

我已經檢查這個link。雖然它看起來很有希望,但它並沒有解決我的問題。我會在下面解釋我的代碼。

這裏是代碼要求用戶輸入序列號:

 byte[] xbee { get; set; } 
     var xbee_serienr = prop1_serienr.Text; 
     xbee = new byte[xbee_serienr.Length/2]; 

     for (var i = 0; i < xbee.Length; i++) 
     { 
      xbee[i] = byte.Parse(xbee_serienr.Substring(i * 2, 2), NumberStyles.HexNumber); 
     } 

我嘗試了上述鏈接,並保存它,像這樣:

prop1_serienr string  user 0013A20040A65E23 

然後在這樣的代碼使用所以:

prop1_serienr = Xbee.Properties.Settings.Default.prop1_serienr; 
    //keep in mind I made the silly decision using Xbee as namespace and xbee as a variable 

但prop1_serienr仍然是這樣的空。

如何使這個不必每次程序啓動,將不勝感激時間輸入更方便任何提示或指引。如果這是我唯一的選擇,我會訴諸硬編碼的序列號,然後每次更改設備時更改代碼。

回答

0

硬編碼的序列號是真的不是一個選擇,特別是當一些爲「保存序列號」完全不很複雜(但像所有的東西,複雜的也可以是,如果你讓它)。

非常簡單的方法:

public partial class Form1 : Form 
{ 
    private byte[] _xbee; 
    public Form1() 
    { 
     if (!File.Exists("serial.txt")) 
     { 
      File.Create("serial.txt"); 
     } 
     else 
     { 
      _xbee = File.ReadAllBytes("serial.txt"); 
     } 

     InitializeComponent(); 
    } 

    private void btnSaveSerial_Click(object sender, EventArgs e) 
    { 
     byte[] xbee { get; set; } 
     var xbee_serienr = prop1_serienr.Text; 
     xbee = new byte[xbee_serienr.Length/2]; 

     for (var i = 0; i < xbee.Length; i++) 
     { 
      xbee[i] = byte.Parse(xbee_serienr.Substring(i * 2, 2), NumberStyles.HexNumber); 
     } 

     _xbee = xbee; 
     File.WriteAllBytes("serial.txt", xbee); 
    } 
} 

它從文件中讀取啓動時的字節(如果該文件存在)。 它在用戶更改序列時將字節寫入文件(並單擊一個按鈕進行保存)。

正如我已經說過了,你可以讓這個容易或者只要你喜歡複雜,但這應該讓你去。

+0

這很好用,謝謝!由於在代碼的不同部分使用了xbee變量,我不得不做一些小的修改,但是一旦我意識到它沒有問題。 – KermitLover

相關問題