把listview设置成details的模式后,怎么让用户不可以改变listview的列宽

解决方案 »

  1.   

    我记得可以重写header的resize事件,
      

  2.   

    ListView的ColumnWidthChanging事件来处理
    void listView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
            {
                ColumnHeader header = this.listView.Columns[e.ColumnIndex];
             
                e.NewWidth = listView.Columns[e.ColumnIndex].Width;
            }
      

  3.   

    ListView的ColumnWidthChanging事件处理方法中的e参数有个Cancel属性,设为true就能取消宽度变化动作。
      

  4.   

     private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
            {
                ColumnHeader header = this.listView1.Columns[e.ColumnIndex];            e.NewWidth = listView1.Columns[e.ColumnIndex].Width;            e.Cancel = true;        }
      

  5.   

    还有一种方法是,把HeaderStyle 设成none,自己用button or label弄个标题
      

  6.   

    ColumnHeader header = this.listView1.Columns[e.ColumnIndex];----------------
    这行好像没啥用,删掉一样有效果。
      

  7.   

    光有e.Cancel=true不行的
    e.NewWidth = listview1.Columns[e.ColumnIndex].Width;
    这步不能省,不软鼠标松手的时候列宽还是变了。
      

  8.   

    你可以试着处理一下CursorChanged事件,看能不能捕获这个变化,能的话就将光标改回去。另外就是MouseMove事件,监视Cursor的变化。