2012-09-27 6 views

Antwort

12

Sie können dies erreichen, indem Sie die gewünschte Zeile editierbar machen und das CellEditActivation-Ereignis verwenden. Initialisieren Sie Ihre OLV und „delete-Spalte“ wie folgt:

// 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"; 
}; 

Dann können Sie die Zeile in der CellEditStarting Handler entfernen, sobald die Spalte geklickt wird:

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 
    } 
} 

dies zu verbessern, Sie kann zusätzlich zum Text ein Bild anzeigen.

// 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; 
}; 

Ergebnis:

enter image description here

Wenn Sie auf das Bild um einen Text angezeigt werden soll nächsten nicht können Sie verwenden

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

Sie auch die Aspect ein Set könnte leere Zeichenfolge, aber betrachten Sie dies als "Best Practice". Wenn Sie immer noch einen Aspekt zurückgeben, funktioniert das Sortieren und Gruppieren immer noch.

0

Wenn die „Löschen“ Spalte nicht die erste Spalte in der ObjectListView ist, werden Sie

ShowImagesOnSubItems = true; 

Siehe auch ObjectListView show icons gesetzt haben.

Verwandte Themen