Свойство DatagridviewCell.Datagridview
доступно только для чтения. То же самое относится к другим элементам datagridview с ссылкой Datagridview
, как строки и столбцы. Тем не менее, когда вы добавляете/удаляете элементы из datagridview, это свойство правильно устанавливается за кулисами, поэтому никогда не возникает несоответствия между ссылками родительского datagridview на его элементы и наоборот.Как установить свойство DataGridViewCell.Datagridview?
Как выполнить datagridview? Я пытаюсь сделать что-то подобное себе. Единственный «трюк», о котором я знаю, заключается в том, чтобы поместить определение коллекции в определение класса или наоборот, чтобы элемент или коллекция имели доступ к закрытым полям другого, но, глядя на пространства имен datagridview, это, похоже, не так ,
Звучит логично, хотя и немного странно. Поскольку необходимо, чтобы родительский dgv и дочерний элемент ссылались друг на друга, синхронизированы, позволяя _anything_ внутри сборки Forms изменять свойство dgv элемента, является довольно широкой областью. Я думаю, все в порядке, поскольку MS явно контролирует всю сборку, но мне интересно, имеются ли дополнительные проверки. – Tekito
Это не очень странно, просто накладывает нагрузку на синхронизацию на разработчика в обмен на какой-то ЧУДЕСНЫЙ неограниченный доступ, который за пределами разработчиков даже не видит. Кстати, если вы определяете свойство вроде этого: public string Text {get; задавать; }, вы можете сделать «set» следующим: public string Text {get; внутренний набор;}. Если вы хотите пойти «под капотом» и посмотреть код, написанный Microsoft для DataGridView, вы можете использовать Reflector от Red-Gate. www.reflector.net – RichardB
Пока разработчик (и будущие разработчики) помнит правила синхронизации. Но, возможно, лучшее решение, так как мое было немного запутанным: абстрактный дочерний класс, определенный внутри определения коллекции, который при запуске передает коллекцию ссылку на делегат, которая позволяет изменять его частное поле '_parentColl'. Таким образом, ссылка на сборник для детей остается скрытой для всех, за исключением одного делегата внутри коллекции, который он использует для синхронизации при добавлении/удалении дочерних элементов. Слишком сложно. – Tekito