Zdravím.
Mám takový zvláštní problém :)
Potřeboval bych udělat přesnou kopii celé záložky, včetně všech komponent na záložce a jejich eventů.
Po spuštění programu mám vytvořené 2 záložky. První záložka je informativní a nic se na ní neděje.
Pro zjednodušení mám na druhé záložce texbox, button na zobrazení hodnoty zadané do textboxu. A tlačítko na kolování záložky(vzor pro klonování bude vždy tato záložka). Chtěl bych aby se po kliknutí na tlačítko KLONOVAT udělala kopii 2. záložky => budou celkem 3 záložky.
Na 3. záložce opět bude možné udělat klon, ovšem klovat se bude vždy 2. záložka.
Klonování 2. záložky:
//vytvor novou zalozku
string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
TabPage myTabPage = new TabPage(title);
myTabPage.BackColor = Color.White;
tabControl1.TabPages.Add(myTabPage);
//zkopiruj prvky z prvni zalozky na nove vytvorenou
foreach (Control c in this.tabControl1.TabPages[1].Controls)
{
Control cNew = (Control)Activator.CreateInstance(c.GetType());
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(c);
foreach (PropertyDescriptor entry in pdc)
{
object val = entry.GetValue(c);
entry.SetValue(cNew, val);
}
this.tabControl1.TabPages[tabControl1.TabCount - 1].Controls.Add(cNew);
}
Vytvoří klon záložky, včetně všech komponent, ovšem tyto komponenty nemají žádné eventy. Když na ně kliknu, nic se nestane.
Jak klonovat komponenty včetně eventů?
Ukázka kodu (VS 2010): http://uloz.to/…Qk/clone-zip