日期:2014-05-18  浏览次数:20774 次

关于ListView控件的ColumnWidthChanging事件
private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
  switch (treeListView1.Columns[e.ColumnIndex].Name)
  {
  case "name":
  e.Cancel = true;
  e.NewWidth = treeListView1.Columns[e.ColumnIndex].Width; //设置固定不变值
  }
}

假设listView1中有一列Name叫"name"的ColumnHeader(标题列)。

以前在ColumnWidthChanging事件(拖动时发生)中实现一些类似上面的功能时,都是拖到列的时候即响应。可是最近使用相同的代码,在拖动时却无法响应。
反而是双击列的分隔符时才响应。

比如有一个下拉框在某列的上端,左边距都一样,即:位置是对齐的。那么如果拖动列,下拉框控件的位置会随着拖动列的位置移动。以前就是在ColumnWidthChanging事件中实现的。

如何响应拖动ListView中的列过程中的事件呢?

------解决方案--------------------
实验了一下果然没效果。。
------解决方案--------------------
你的区分 ColumnWidthChanged ColumnWidthChanging 两个事件
ColumnWidthChanged 是你要的事件 


------解决方案--------------------
ColumnWidthChanged可以用这一个。但得先判断一下它是否是你的初始宽度。
因为它在初始化时就会触发这个事件