ObjectListView - Изтрийте ред, като щракнете върху определена колона с фиксирано съдържание/текст

Имам прост въпрос, който не мога да разреша сам.

Имам ObjectListView, пълен с някои от моите обекти. Но в допълнение към това искам да имам още една колона с текст по подразбиране „Изтриване“. При щракване върху тази колона избраният ред трябва да бъде изтрит. Как да направя това?


person Daffi    schedule 27.09.2012    source източник


Отговори (2)


Можете да постигнете това, като направите желания ред редактируем и използвате събитието CellEditActivation. Инициализирайте вашия OLV и "delete-column", както следва:

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

Резултат:

въведете описание на изображението тук

Ако не искате да се показва никакъв текст до изображението, можете да използвате

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

Можете също така да зададете Aspect на празен низ, но считайте това за "най-добра практика". Ако все още връщате аспект, сортирането и групирането ще продължат да работят.

person Rev    schedule 02.11.2012

Ако колоната „Изтриване“ не е първата колона в ObjectListView, ще трябва да зададете

ShowImagesOnSubItems = true;

Вижте също Икони за показване на ObjectListView.

person huoxudong125    schedule 14.08.2013