将TimeZoneInfo添加到组合框并设置SeletedItem让我很困惑



所以我用所有计算机时区填充一个组合框,然后默认选择本地时区。我可以填充组合框,但选择默认项让我感到困惑。

'load up the combobox with all time zones
Dim tzCollection As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones()
cboClockTmZone1.DataSource = tzCollection
'the computers local time zone
Dim myZone As TimeZoneInfo = TimeZoneInfo.Local
'get the index of the local time zone in the collections
Dim idx As Integer = tzCollection.IndexOf(myZone)
Dim qdx As Integer = cboClockTmZone1.Items.IndexOf(myZone)
'set the time zone
'cboClockTmZone1.SelectedIndex = idx 'this works
cboClockTmZone1.SelectedIndex = qdx 'this does not

因此,也许我对此缺乏理解,但当我将集合绑定到组合框时,它不会被TimeZoneInfo对象填满。换句话说,每个列表项的类型不是TimeZoneInfo吗?如果是,为什么qdx分配不起作用?我得到了-1,这意味着它在组合框中找不到时区对象,但它可以在tzCollection中找到它。我也尝试过.SelectedItem,但也没有成功。

我只是不明白这是怎么回事。它现在可以工作了,因为我认为有一个从tzCollection到cbo项的一对一映射。但是,如果有人能阐明这两种方法,让我更好地理解,我将不胜感激

TimeZoneInfo类中遇到错误。他们忘记重写Object.Equals()方法。这个错误已经被报告了,应该在.NET的下一个版本中修复。不太确定它是否适用于4.5,应该修复。

相关内容

  • 没有找到相关文章

最新更新