private void button1_Click_2(object sender, EventArgs e)
{
try
{
string text = string.Format("Column {0}.Width Before Remove: {1}, Column {2}.Width Before Remove: {3}",
columnHeader2.Text,
columnHeader2.Width,
columnHeader3.Text,
columnHeader3.Width
);
int old_width = columnHeader2.Width ;
MessageBox.Show(text);
this.listView1.Columns.Remove(columnHeader2);
// columnHeader2.Width = old_width;
text = string.Format("Column {0}.Width After Remove: {1}, Column {2}.Width After Remove: {3}",
columnHeader2.Text,
columnHeader2.Width,
columnHeader3.Text,
columnHeader3.Width
);
MessageBox.Show(text);
ListViewItem item = new ListViewItem();
item.SubItems.AddRange(new string[] {"x", "y"});
listView1.Items.Add(item);
Console.WriteLine("asdf");
}
catch (Exception ex)
{
Trace.Assert(false, ex.ToString());
}
}
|
如果没有先保存再恢复的代码, 一个ColumnHeader 被删除之后, 再次插入时它的宽度会变成它右边的那个ColumnHeader的控件. 如果是删除末尾(从左至右的顺序)的ColumnHeader则不会有这个现象,
窃以为这是.NET中ListView控件的一个Bug, 毕竟从ColumnHeaderCollection集合中删除其中一个元素不应该有这样的副作用.
下面两个动画是分别演示其效果:
注意上面删除的语句之后显示的Col 2, Col 3的宽度
下面是作了恢复宽度的代码:
|
文件: | ListView_ColumnHeader_bug.rar |
大小: | 13KB |
下载: | 下载 |
|
阅读(876) | 评论(0) | 转发(0) |