2012-07-19 80 views
0

比方說,我有一個密碼陣列...循環數組時間C#的WinForms

 var pass = new int[5]; 
     pass[0] = 111111; 
     pass[1] = 222222; 
     pass[2] = 333333; 
     pass[3] = 444444; 
     pass[4] = 555555; 

和當前時間的驗證。例如,您的日程安排爲上午7:30:00至上午11:30:00,如果您的密碼還不是7:30,並且已經過了11:30,您將無法獲得密碼。但在這段時間之間,沒關係,你可以得到你的密碼。一旦Button1的點擊(W/C意味着您已經授權 - 正確的時間),一個消息框會出現顯示類似,

您的密碼是111111

等等等等直到所有的密碼用完,然後它會再次回到密碼111111,222222,333333等......我該怎麼辦?像什麼時間格式?我對時間比較很難。謝謝。

+1

您正在索引第4個元素數組FYI中的第五個元素。你的代碼示例會崩潰。 – 2012-07-19 00:54:56

+0

[如何檢查當前時間是否在一個時間範圍之內?](http://stackoverflow.com/questions/592248/how-can-i-check-if-the-current-time-is-between在一個時間幀) – zimdanen 2012-07-19 00:58:33

回答

2

函數isValidTime僅在一天中的幾小時檢查時間。

如下所示,您可以使用模塊化運算法封裝您的密碼。

對我來說,以下工作:

private int currentPassword = -1; 
    private int[] passwords = new int[]{111111,222222,333333,444444,555555}; 

    private DateTime startTime = new DateTime(2012, 7, 18, 22, 0, 0); 
    private DateTime endTime = new DateTime(2012, 7, 18, 22, 15, 0); 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (isValidTime(DateTime.Now)) 
     { 
      currentPassword++; 
      currentPassword = currentPassword % passwords.Length; 

      MessageBox.Show(passwords[currentPassword].ToString()); 
     } 
     else 
     { 
      MessageBox.Show("Try again at a different time"); 
     } 
    } 

    private bool isValidTime(DateTime now) 
    { 
     if (startTime.TimeOfDay.CompareTo(now.TimeOfDay) <= 0) 
     { 
      if (now.TimeOfDay.CompareTo(endTime.TimeOfDay) <= 0) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

剛開始一個新的Windows窗體中添加一個按鈕1,這個代碼應工作。

+0

它工作得很好,但是當我關閉消息框並嘗試獲取下一個密碼(它是222222)時,它仍然是111111.爲什麼? – 2012-07-21 07:09:24

+0

@CantHandleMeBabe您是偶然關閉程序,而不是關閉消息框?因爲,我們每次在顯示msgBox之前增加密碼。如果您希望currentPassword值在應用程序運行之間持續存在,請在您的問題中提及它。 – Xantix 2012-07-23 21:35:57