作成したコードを再利用して、datagridviewに機能を追加したいと思います。デフォルトのdatagridviewプロパティとイベントを公開したいので、新しいカスタムコンポーネントを作成したくありませんでした。だから私はサブクラスを書いてみましたが、それはうまくいきます。しかし、コンストラクターでdatagridviewを取得し、同じ方法でセットアップするスタンドアロンのユーティリティクラスを作成できることにも気づきました。例えば
public class
MyGrid
{
private DataGridView m_dg;
public MyGrid(DataGridView dg)
{
m_dg = dg;
m_dg.RowHeadersVisible = false;
m_dg.SortCompare += new DataGridViewSortCompareEventHandler(m_dg_SortCompare);
}
void m_dg_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
// do custom sorting here
}
}
だから私のアプリのスタートアップのどこかで私は電話します
MyGrid g1 = new MyGrid(dataGridView1);
MyGrid g2 = new MyGrid(dataGridView2);
などなど。このアプローチの不利な点はありますか?コードの多くは同じになるようですが、違いは、拡張グリッドをインスタンス化する方法(サブクラス化されたコントロールをフォームにドラッグアンドドロップする方法と、プレーンなデータグリッドビューをドラッグアンドドロップして上記のコードを呼び出す方法)の違いです。