2014-02-11 3 views
0

Выбор уровня защиты для DataGridView Недвижимость DataGridViewRowCollection - это то, что я не могу понять. Он установлен в protected, поэтому он не может получить его снаружи, что было бы естественным делом. Я не могу представить, чтобы кто-нибудь дал разумное объяснение этому, но, может быть, ... кто-нибудь?Почему свойство DataGridViewRowCollection.DataGridView защищено?

+0

Поскольку при нормальном использовании вам не нужно обращаться к DataGridView из строки, потому что у вас уже есть ссылка на него. Однако вы реализуете пользовательский DataGridViewRowCollection (если такая возможность даже возможна), вам нужно будет иметь доступ к родительскому элементу. – stuartd

+0

На самом деле то же самое свойство в 'DataGridViewRow' является' public'. Более естественным способом расширения 'DataGridViewRowCollection' было бы использование методов расширения, поскольку даже если бы я расширил его по наследованию, я не смог бы заменить свойство' Rows' 'DataGridView'. Таким образом, наследование имеет смысл, если я реализую совершенно новый элемент управления, но зачем мне использовать «DataGridViewRowCollection» в этом случае вместо моей собственной коллекции? –

ответ

0

Я считаю, что stuartd прав насчет того, чтобы поощрять расширение DataGridViewRowCollection по наследству, а не по методам расширения. Мне показалось странным, поскольку я думал, что нет возможности заменить DataGridViewRows собственностью с вашей собственной реализацией. Оказывается, есть способ сделать это, и он называется protected void CreateRowsInstance() - метод DataGridView, поэтому, по крайней мере, немного разумно разместить свойство DataGridView в защищенной области.

Смежные вопросы