Bạn có thể đạt được điều này bằng cách làm cho hàng mong muốn có thể chỉnh sửa và sử dụng sự kiện CellEditActivation. Khởi OLV của bạn và "xóa cột" như sau:
// 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";
};
Sau đó, bạn có thể loại bỏ các hàng trong xử lý CellEditStarting càng sớm càng cột được nhấp:
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
}
}
Để cải thiện về vấn đề này, bạn có thể hiển thị hình ảnh ngoài văn bản.
// 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;
};
Kết quả:
Nếu bạn không muốn hiển thị bất kỳ văn bản bên cạnh các hình ảnh mà bạn có thể sử dụng
deleteColumn.AspectToStringConverter = delegate {
return String.Empty;
};
Bạn cũng có thể thiết lập các Aspect đến một chuỗi rỗng, nhưng coi đây là "thực hành tốt nhất". Bằng cách vẫn trả về một khía cạnh, sắp xếp và nhóm sẽ vẫn hoạt động.
Nguồn
2012-11-02 08:31:46