我需要實現的是, 使用組合框(包含所有時區)和複選框下方的複選框顯示UI。 僅當時區(選定的組合框項目)支持夏令時時,才應顯示覆選框。當UI控件呈現時,還可以根據上次配置選中/取消選中複選框。在C中處理時區#
現在C#中的TimeZoneInfo類允許我獲得時區列表(Combobox的數據)。 但TimeZoneInfo類中的SupportsDayLightSaving屬性在複選框選中時指示爲true,在存在時不指定複選框或複選框未選中。
那麼,如何經由,
1.Whether的時區支持DayLightSavingTime C#決定(例如爲:印度標準時間犯規支持DST) 2.Whether DST的使能(複選框被選中/如果時區支持DST,則不選中)。
編輯: 如果我以前沒有正確解釋過,這裏是更詳細的信息。 我想要做什麼:
- 顯示/隱藏複選框(是什麼,如果條件做出這一決定)
- 如果顯示覆選框,選中/取消選中該複選框(是什麼,如果條件藉此決定)。
PS:根據MSDN SupportsDaylightSavingTime屬性,如果選中該複選框,則該值爲true,如果取消選中該複選框或者該時區不支持DST,則該值爲false。使用此屬性,如果該值爲false,則無法確定是隱藏複選框還是顯示它並取消選中該複選框。 例如:對於印度標準時間,我不應該顯示覆選框,因爲如果我必須依靠屬性值,那麼我會把它看作是假的,我可以隱藏它。 但考慮我們有柏林時區(+ 1 UTC)與複選框未選中使用控制面板設置,然後我會檢索屬性值爲false,應用上述邏輯將隱藏複選框,而是在這裏我想顯示覆選框的狀態未選中。
編輯回答: 看起來我無法正確解釋問題,我很抱歉。 經過長時間的搜索和搜索,我可以看到.NET不提供API來支持我的需要。因此,有一個解決方案,
檢查SupportsDaylightSavingsTime屬性是否爲真, 如果然後顯示覆選框狀態選中。如果上述屬性值爲false,則檢查註冊表中的DynamicDaylightTimeDisabled值(HKLM \ System \ CurrentControlSet \ Control \ TimeZoneInformation)。因爲這裏的錯誤並不意味着時區不支持DST,它也可以被禁用。如果值爲1,則顯示未選中狀態的複選框(因爲它支持DST但此時被禁用)。如果該值爲0,則不顯示覆選框(因爲時區不支持DST)。
//get the time zone info for the currently selected time zone.
if (timeZoneInfo.SupportsDaylightSavingsTime)
{
//Show the checkbox.
//Mark the checkbox state as checked.
}
else
{
//doesnt mean that the timezone doesnt support DST.
int regValue;//Get the reg value of DynamicDaylightTimeDisabled in
//location HKLM\System\CurrentControlSet\Control\TimeZoneInformation\
if(regValue == 0)
{
//Donot show the checkbox.
}
if(regValue == 1)
{
//show the checkbox.
//Mark the checkbox state as unchecked.
}
}
您使用贏dows-Form,WPF,ASP.NET? –
它是一個wpf應用程序。但沒關係,因爲我只是爲了理解才解釋了用戶界面。我的疑問是我需要使用什麼API來檢查我的兩個條件。 1.顯示/隱藏複選框。 2.選中/取消選中複選框。 – srsyogesh