2011-11-13 37 views
3

需要一些幫助,我有一個包含像這樣的字符串的TextBlock 00:00:00而且我想創建一個計時器,它將每秒計算一次eg 00:00:01,00:00 :02等c中的2位數字#

所以我做了愚蠢的事情是把文本框

string[] times = myTextbox.Text.Split(':'); 
int hours = Int32.Parse(times[0]); 
int minutes = Int32.Parse(times[1]); 
int seconds = Int32.Parse(times[2]); 

然後我增加正確的變量,最後我再次加入他們的價值,並把它們放回文本塊,但現在我的計數器是這樣的:0:0:1,0:0:2,...

我知道這個問題,它非常合乎邏輯,但我的問題是ho我可以解決它:)

非常感謝。

回答

4

而是分裂文本框的文字我會用DateTime.Parse這樣的:

var time = DateTime.Parse(myTextBox.Text); 

然後添加第二個:

time = time.AddSeconds(1); 

,最後,把它背在那裏:

myTextBox.Text = time.ToString("myPattern"); 

其中myPattern被替換爲任何這裏所描述的模式的:http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

+0

這是最正確的答案,處理它像一個DateTime :)我會用你的感謝... –

+0

對你的答案進行處理最好的原因是我將字符串作爲DateTime處理,但是你有一個錯誤。 AddSeconds方法返回一個新的System.DateTime,所以它的食物是這樣的: 'time = time.AddSeconds(1);' –

+0

Woops,對吧。再讀一遍你的問題,讓我意識到你可能真的想要利用TimeSpan類而不是DateTime--在我看來,你對通過的時間量而不是一個時間點更感興趣。這一切都取決於你想表達什麼。 – nillls

7

當你「再次加入它們」時,對每個整數使用.ToString("00")得到兩位數。另外,請查看這裏使用TimeSpan。

+1

+1'TimeSpan'。似乎更合適 –

+0

我使用TimeSpan來創建計時器,所以我認爲TimeSpan會有一些格式化屬性的權利?我會搜索它,謝謝你的答案。 –

+0

@Andrew是的,TimeSpan的格式化字符串爲你想要的(解析和ToString) –

8
string displayString = String.Format("{0:00}:{1:00}:{2:00}", 
hours, minutes, seconds); 

:之後的部分是格式描述。 00表示總是使用至少兩個位置,並顯示一個空位置爲0

+0

謝謝安德斯,這就是我想要的代碼。 –

1

下面以串從TextBox,依次增加1秒,並返回結果的(/小時,包括正確的包裹圍繞分鐘)的字符串:

myTextbox.Text = TimeSpan.FromSeconds (TimeSpan.Parse (myTextbox.Text).TotalSeconds + 1).ToString ("c"); 

一個備註 - 您需要添加異常處理的情況下TextBox是可編輯的,可能包含錯誤的數據...

對於一些參考文獻,參見:

1
TimeSpan span = DateTime.Now.Subtract(startTimeOfTimer); 

int Totalsec = span.Seconds; 
      int seconds = Totalsec % 60; 
      int minutes = span.Minutes; 
      int hour = span.Hours; 
      string Elapsedtime = string.Format("{0:00}:{1:00}:{2:00}",hour, minutes, seconds); that will output hour:min:sec as 00:00:00(two digit number)