2009-02-19 146 views
3

我正在用winforms構建一個表單 - 並且應該添加一個視圖和可編輯的時間跨度值。 哪個控件最適合這個?Winforms和TimeSpan - 哪種控件最適合?

一個正常的編輯控件顯示正確的價值 - >但它不是非常好的改變值

正常的日期時間選擇器不工作

的屏蔽的編輯控件沒有有任何標準面具這個

有沒有人有這個任務控制一個好主意?

回答

2

對於另一個項目,我不得不編輯一個時間跨度。

我終於使用了3​​個數字上/下控制:第一個控制總小時數,第二個分鐘數和第三個秒數。

//Setting the values 
durationHours.Value = (Decimal)Math.Floor (data.TotalHours); 
durationMin.Value = data.Minutes; 
durationSeconds.Value = data.Seconds; 

//Getting the values 
data = new TimeSpan((int)durationHours.Value, (int)durationMin.Value, (int)durationSeconds.Value); 
2

使用正常的文本框,再加上檢查使用TimeSpan.TryParse()值和提示你期待什麼樣的數據的工具提示錯誤提供商控制。

如果您願意,也可以將所有這些組合到一個自定義控件中。

5

我構建了一個TextBox加上ComboBox以選擇單位的文本框。用戶控件具有範圍設置(值+ - )和(時間單位)。根據挑選的單位,文本框被隔開檢查 - 例如,1-7天可能有效,但如果單位是分鐘,則1-60分鐘可能會更好。

我已經完成了一個NumericUpDown的兩個組合框的組合。

如果你需要的時間跨度是像3天4小時6分鐘的事情,我可能會選擇帶有蒙版文本框和範圍檢查部件的用戶控件。

通常,我選擇第一個,但。

只是我的兩分錢。

+0

第三聲音很像我認爲應該控制工作 – bernhardrusch 2009-02-19 16:22:47

+0

很好的回答。我也選擇了#3。 – 2012-03-26 16:14:09

1

如果您正在尋找一些工作代碼,請查看下面的鏈接。

This blog post提供用於選擇時間跨度的WPF用戶控件的源代碼。

5

使用TimeSpan Helper,其中包括一個簡單的控制(當我用它時沒有記錄得太好)。

0

如果你不需要想允許超過24小時,你不希望指定毫秒我認爲日期時間選擇器的工作原理是最好的,特別是如果你創建一個用戶控制使其成爲TimeSpan選取器。

好的是你可以更新小時/分鐘/秒。它會自動阻止您設置超過60分鐘/秒的時間。缺點:沒有毫秒,也不會超過一天。

在developer studio中添加一個新的用戶控件:TimePicker。 在用戶控件上放置一個DateTime選擇器。 更改屬性:

  • Format:Time;這使得您只能看到一個時間(以秒爲單位),直到24小時
  • ShowUpDown:True:這使您無法打開日曆。你會有一個小時/分鐘/秒的上下。

使用本地化的時間格式。如果您想要特定的時間格式,請使用自定義時間格式。

對已驗證的事件進行響應,以將該值讀取爲DateTime,並在同一天的開始時從Midnight中減去該值。結果將是TimeSpan。 在Valug.Get中返回此值。 Value.Set:將今天午夜的DateTime添加到TimeSpan中進行設置。

如果您需要超過24小時,或想要添加毫秒,請添加一個文本框並使用驗證和TryParse。這甚至會允許用戶使用刻度而不是時間通知。如果未驗證,請使用工具提示顯示錯誤。