2014-02-11 86 views
0

DataGridViewDataGridViewRowCollection財產的保護等級的選擇是我無法理解的。它被設置爲protected,所以無法從外部訪問它,這是很自然的事情。我無法想象有人給出合理的解釋,但也許......任何人?爲什麼DataGridViewRowCollection.DataGridView屬性受保護?

+0

因爲在正常使用情況下,您不應該從行中訪問DataGridView,因爲您已經有了對它的引用。然而,你是否正在實現一個自定義DataGridViewRowCollection(如果這樣的事情甚至可能),那麼你將需要能夠訪問父。 – stuartd

+0

事實上,'DataGridViewRow'中的同一個屬性是'public'。擴展'DataGridViewRowCollection'的更自然的方法是使用擴展方法,因爲即使我通過繼承來擴展它,我也無法替換DataGridView的'Rows'屬性。所以如果我正在實現一個全新的控件,繼承是有意義的,但爲什麼我會在這種情況下使用'DataGridViewRowCollection'而不是我自己的集合呢? –

回答

0

我相信stuartd是對的,它鼓勵通過繼承擴展DataGridViewRowCollection,而不是通過擴展方法。我發現它很奇怪,因爲我認爲沒有辦法用你自己的實現來代替DataGridViewRows屬性。事實證明,有一種方法可以實現,它被稱爲protected void CreateRowsInstance() - DataGridView的一種方法,因此將DataGridView屬性放在受保護的範圍內似乎至少有點合理。

相關問題