2012-04-10 7 views

Antwort

2

Es sieht so aus, als ob es versteckt ist, weil es von einer Helferklasse gesteuert wird. Nach the accepted answer to this question legt die Initialize() -Methode des DataGridViewDesigner (eine nicht dokumentierte und ziemlich gut versteckte Hilfsklasse) die AutoGenerateColumns-Eigenschaft der DGV fest, abhängig davon, ob eine DataSource angegeben ist, die alles überschreibt, was Sie in Ihrem eigenen Code angeben.

Die Logik wäre, dass eine DataSource erforderlich ist, um Spalten automatisch zu generieren; Daher wäre es ungültig, wenn Sie versuchen würden, diese Eigenschaft auf True zu setzen, ohne einen Wert angegeben zu haben. Wenn Sie die DataSource dagegen im Designer festlegen, möchten Sie wahrscheinlich, dass DGV die Spalten für Sie einrichtet, es sei denn, Sie haben mithilfe der Columns-Eigenschaft auch eigene Spalten eingerichtet.

Sie können diese Eigenschaft verfügbar machen, indem Sie sie in einer abgeleiteten Klasse überschreiben und ein [Browseable(true)]-Attribut angeben. Wie die obige Frage zeigt, wird alles, was Sie in einem Konstruktor oder in der InitializeComponent() -Methode angeben, trotzdem vom DGVDesigner überschrieben.

+0

Sinn macht. Ich war nur neugierig, nicht wirklich in der Notwendigkeit, es zu ändern. Es hat mich beeindruckt. Trotzdem frage ich mich immer noch, wo der Unterschied zwischen dem Windows Forms DataGrid und seinem ASP.NET Counter-Teil ist. Ich meine, wenn es ein winziges, merkwürdiges Ding gibt, das die Jungs daran hindert, beide Kontrollen auf die gleiche Weise zu implementieren. Danke für deine Antwort! –

+0

Macht Sinn *, außer dass es standardmäßig stimmt *! Bei der Konstruktion von Sans-Designer müssen Sie sich dieser (etwas) versteckten Eigenschaft bewusst sein. – Tergiver

+0

Ja, die Tatsache, dass es standardmäßig stimmt, ist seltsam. Ich glaube immer, dass es besser ist, dem Benutzer die Fähigkeit zu geben, das, was er am Anfang braucht, aufzubauen, anstatt mit dem zu beginnen, was er wahrscheinlich nicht benötigt, und Dinge zu entfernen, bis er das gewünschte Ergebnis erzielt. Ein Microsoft-Geheimnis :). –

Verwandte Themen