私はいくつかのスタイルを実行し、いくつかの列を追加するDataGridView継承コントロールを作成しています。問題は、このコントロールを別のフォームに追加すると、デザイナーはColumnsプロパティがデフォルト値と一致しないことを認識し、新しいフォームのデザイナに列生成を追加します。列を追加する拡張DataGridViewコントロールを使用する場合、デザイナ列の複製を防止するにはどうすればよいですか?
問題を説明する。次のコントロールを取ってください:
Columns.Clear()は不要です。問題はコンストラクタではないことを示すためだけです。とにかく、コントロールをフォームに追加します。フォームUIをリロードする(たとえば、データグリッドビューのサイズを変更するなど)、デザイナーは常に新しい列を追加してしまいます。私は結果のない様々なアイデアを試しました。私はデザイナーから列のプロパティを非表示にしようとしましたが、残念ながらそれは仮想ではないので、それも無駄です。
アイデア?おそらくこれはかなり一般的な使用パターンなので、私は単純なものを見逃すはずです。私は実行時に列を追加するだけでいいですが、理想的にはデザイナーで表示/編集可能にしたいと思っています。見ると相互作用することができるようにしたいのすべての問題を解決し
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new DataGridViewColumnCollection Columns { get => base.Columns; }
:
最初に、UIがロードされるたびにフォームUIが読み込まれるたびに(デザイン時)、列が追加されています。次に、コントロールコンストラクタで列を追加する必要はありませんが、必要な場合は条件付きブロックの内部に配置します。 if(!DesignMode){code here} – Munawar
私も試しました!DesignMode。それは(一見)うまくいくはずですが、そうではありません。可能であれば –
、コードを共有してください。コミュニティが再現して解決策/解決策に助言するのは簡単で、間違っていることを推測し続けるのは簡単です。 – Munawar