2012-09-27 26 views

回答

12

您可以通过使所需的行可编辑并使用CellEditActivation事件来实现此目的。初始化OLV和“删除列”,如下所示:

// fire cell edit event on single click 
objectListView1.CellEditActivation = ObjectListView.CellEditActivateMode.SingleClick; 
objectListView1.CellEditStarting += ObjectListView1OnCellEditStarting; 

// enable cell edit and always set cell text to "Delete" 
deleteColumn.IsEditable = true; 
deleteColumn.AspectGetter = delegate { 
    return "Delete"; 
}; 

然后你就可以尽快栏点击删除行的CellEditStarting处理:

private void ObjectListView1OnCellEditStarting(object sender, CellEditEventArgs e) { 
    // special cell edit handling for our delete-row 
    if (e.Column == deleteColumn) { 
     e.Cancel = true;  // we don't want to edit anything 
     objectListView1.RemoveObject(e.RowObject); // remove object 
    } 
} 

为了改善这一点,你除了文本之外,还可以显示图像。

// assign an ImageList containing at least one image to SmallImageList 
objectListView1.SmallImageList = imageList1; 

// always display image from index 0 as default image for deleteColumn 
deleteColumn.ImageGetter = delegate { 
    return 0; 
}; 

结果:

enter image description here

如果你不想旁边的图像显示任何文本可以使用

deleteColumn.AspectToStringConverter = delegate { 
    return String.Empty; 
}; 

你也可以设置看点一空字符串,但将其视为“最佳做法”。通过仍然返回一个方面,排序和分组仍然有效。

相关问题