Ich möchte einige Code, den ich schrieb, um einige Funktionen zu einem Datagridview hinzufügen wiederverwenden. Ich möchte, dass die standardmäßigen Eigenschaften und Ereignisse von datagridview verfügbar gemacht werden, sodass ich keine neue benutzerdefinierte Komponente erstellen wollte. Also habe ich versucht, eine Unterklasse zu schreiben, was gut funktioniert. Mir ist aber auch eingefallen, dass ich eine Standalone-Utility-Klasse schreiben könnte, die eine Datagridview im Konstruktor aufnimmt und auf die gleiche Weise aufruft. z.B.Dienstprogrammklasse vs Unterklasse. NET-Steuerelemente
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
}
}
so irgendwo im Start meiner app würde ich
MyGrid g1 = new MyGrid(dataGridView1);
MyGrid g2 = new MyGrid(dataGridView2);
nennen und so weiter. irgendwelche Nachteile für diesen Ansatz? Es sieht so aus, als ob der Code weitgehend identisch ist, der Unterschied liegt darin, wie Sie das erweiterte Raster instanziieren (ziehen Sie ein Unterklasse - Steuerelement in das Formular und ziehen Sie eine einfache Datagrid - Ansicht und rufen Sie den obigen Code auf)