Windows CE 5.0,.NET Compact framework 3.5
我遇到过ListView控件的一个非常奇怪的行为。我扩展了ListView控件,如下所示:
public partial class MyListView : ListView
{
public void Fill(IEnumerable<string[]> data)
{
BeginUpdate();
Items.Clear();
foreach (var d in data) {
Items.Add(new ListViewItem(d));
}
EndUpdate();
}
}
我有两个具有相同操作系统映像的类似设备。此代码适用于第一个设备,但它会在第二个设备的 Items.Add 处引发异常。每次都不会出现异常,但经常出现异常。 我无法理解问题出在哪里。你知道为什么会这样吗?
System.ArgumentOutOfRangeException was unhandled Message="Exception" StackTrace:
at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
at System.Windows.Forms.ListView.ntvGetColumnHeaderWidth(Int32 iColumn)
at System.Windows.Forms.ColumnHeader.get_Width()
at System.Windows.Forms.ListViewItem.ListViewSubItem.Actualize(Int32 index)
at System.Windows.Forms.ListViewItem.ListViewSubItemCollection.Actualize()
at System.Windows.Forms.ListView.ListViewItemCollection.Insert(Int32 index, ListViewItem listViewItem)
at System.Windows.Forms.ListView.ListViewItemCollection.Add(ListViewItem listViewItem)
at MyNamespace.MyListView.Fill(IEnumerable`1 data)
有时我得到这样的例外:
System.ArgumentOutOfRangeException was unhandled
Message="Specified argument was out of the range of valid values.\r\nParameter name: index"
StackTrace:
at System.Windows.Forms.ListViewItem.ListViewSubItem.Actualize(Int32 index)
at System.Windows.Forms.ListViewItem.ListViewSubItemCollection.Actualize()
at System.Windows.Forms.ListView.ListViewItemCollection.Insert(Int32 index, ListViewItem listViewItem)
at System.Windows.Forms.ListView.ListViewItemCollection.Add(ListViewItem listViewItem)
答案 0 :(得分:0)
这两行表明我可能是ListView标题的问题,你是在填充它之前加了它还是在添加项目之前定义它?
at System.Windows.Forms.ListView.ntvGetColumnHeaderWidth(Int32 iColumn)
at System.Windows.Forms.ColumnHeader.get_Width()