Другой подход в зависимости от того, как вы меняете div. Если вы используете JQuery для изменения содержимого div с помощью метода html (), вы можете расширить этот метод и вызвать функцию регистрации каждый раз, когда вы помещаете html в div.
(function( $, oldHtmlMethod ){
// Override the core html method in the jQuery object.
$.fn.html = function(){
// Execute the original HTML method using the
// augmented arguments collection.
var results = oldHtmlMethod.apply( this, arguments );
com.invisibility.elements.findAndRegisterElements(this);
return results;
};
})( jQuery, jQuery.fn.html );
Мы просто перехватываем вызывает html (), вызывает функцию регистрации с этим, которая в контексте относится к целевому элементу, получающему новый контент, затем мы передаем вызов исходной функции jquery.html (). Не забудьте вернуть результаты исходного метода html (), потому что JQuery ожидает его для цепочки методов.
Для получения дополнительной информации об переопределении и расширении метода проверьте http: //www.bennadel. com / blog / 2009-Using-Self-Executing-Function-Arguments-To-Override-Core-jQuery-Methods.htm , где я скрещивал функцию закрытия. Также ознакомьтесь с учебником плагинов на сайте JQuery.
Вы могли также сделать ListView ownerdraw. Вы затем имеете полный контроль над тем, как объекты смотрят, выбраны ли они или не или включают ли самому ListView или нет. DrawListViewItemEventArgs позволяет просить, чтобы ListView потянул отдельные части объекта, таким образом, только необходимо потянуть биты, Вы интересуетесь. Например, можно потянуть фон объекта, но оставить его до ListView для рисования текста.
Существует две опции, изменяются, выбранные строки отключили цвета. Или измените все другие строки для моделирования, они отключены за исключением выбранного. Первая опция является, очевидно, самой легкой, и вторая опция, очевидно, испытывает необходимость в некоторой дополнительной защите.
Я на самом деле сделал первую опцию прежде, и она работает вполне хорошо. Просто необходимо не забыть возвращать цвета к значениям по умолчанию в случае, если другая строка выбрана позже в процессе.
Внедрите SelectedIndexChanged и сделайте это
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
{
listViewABC.SelectedItems.Clear();
}