3

フォームにデータグリッドビューがあります。この datagridview にはいくつかの列があります。いくつかのカスタム列があります (カスタムの datagridview セルを作成しました)。これらのカスタム セルには、それらを設定するために、設計時に datagridview の列エディターから表示したいいくつかのプロパティがあります。そのため、設計時に datagridview の列エディターを開き、カスタム datagridview セルの列を作成します。次に、いくつかのカスタム プロパティを設定し、datagridview の列エディタを閉じます。datagridview の列エディターを開くと、それらのカスタム プロパティに以前に設定した値が反映されず、datagridview の列エディターを閉じると保存されなかったようです。なぜ?カスタム プロパティの値が保存されないのはなぜですか? 私は何を間違っていますか?

さらに、フォームが読み込まれると例外が発生するため、これらのカスタム プロパティを空のままにしておくことはできません (オブジェクト参照がオブジェクトのインスタンスとして設定されていません)。

誰かが私を助けてくれれば、とても感謝しています。

4

1 に答える 1

3

この同じ問題に遭遇しました。検索した結果、マイクロソフトのサイトiCloneableで、datagridviewtextboxcolumn派生物に実装する必要があるというフィードバックを見つけました。

この記事と関連するセクションは次のとおりです。

まれに、セル レベルで同等のプロパティを持たないプロパティを列の型で公開する必要がある場合があります。その例は、DataGridViewLinkColumn.Text と DataGridViewImageColumn.Image です。そのような場合、列クラスは Clone メソッドをオーバーライドして、そのプロパティをコピーする必要があります。

私のコラムには 4 つの追加のプロパティが追加されました。これが私の icloneable 関数です。

      //Override this method to set the custom properties.
  public override object Clone()
  {
     var col = base.Clone() as BauerDataGridViewTextBoxColumn;
     col.ShowBorder = this.ShowBorder;
     col.BorderColor = this.BorderColor;
     col.ColumnChooserIsOptional = this.ColumnChooserIsOptional;
     col.ColumnChooserColumnLabel = this.ColumnChooserColumnLabel;
     return col;
  }
于 2012-12-05T17:49:50.413 に答える