2012-04-10 75 views

回答

2

它看起來像是隱藏的,因爲它是由輔助類控制的。根據the accepted answer to this question,DataGridViewDesigner的Initialize()方法(一個未公開且隱藏很好的輔助類)根據是否存在指定的DataSource來設置DGV的AutoGenerateColumns屬性,該屬性會覆蓋您可能在自己的代碼中指定的任何內容。

邏輯是需要一個DataSource來自動生成列;所以,讓你嘗試將這個屬性設置爲True而不指定一個屬性是無效的。相反,如果您要在設計器中設置數據源,則可能需要DGV爲您設置列,除非您還使用Columns屬性設置了自己的列。

您可以通過在派生類中重寫該屬性並指定[Browseable(true)]屬性來公開該屬性。但是,正如上面的問題所示,無論如何,您在構造函數或InitializeComponent()方法中設置的任何內容都將被DGVDesigner覆蓋。

+0

有道理。我只是好奇,並不需要改變它。它只是給我留下了印象。無論如何,我仍然想知道Windows窗體DataGrid和它的ASP.NET計數器部分之間的區別在哪裏。我的意思是,如果有任何微小的,好奇的東西阻止這些傢伙以同樣的方式實施兩種控制。感謝您的回答! – 2012-04-10 20:49:13

+0

有意義*除了它默認爲true *!所以當他們構建他們的時候,你必須意識到這個(有些)隱藏的屬性。 – Tergiver 2012-04-10 21:15:53

+0

是的,事實是默認情況下是真的很奇怪。 我始終認爲最好讓用戶能夠在開始時建立自己需要的內容,而不是從他最可能不需要的內容開始,並在他/她得到期望的結果之前刪除內容。微軟的神祕:)。 – 2012-04-11 07:34:17

相關問題