Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2306569
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2009-01-08 13:45:12

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
下载:下载

阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~