Usuário com melhor resposta
Excluir um TabItem em run Time

Pergunta
-
Pessoal, criei um TabItem em runtime da seguite forma
public
void CriaTab(string pHeader, string pName, object pForm) { TabItem cadcli = new TabItem();cadcli.Content = pForm;
cadcli.Header = pHeader;
cadcli.Name = pName;
TabControl1.Items.Add(cadcli);
}
onde o "pForm" e um UserControl. Pois bem, quando preciso remove-lo tambem em runtime uso este codigo
if ( (TabControl1.Items.Count > 1) && ( TabControl1.Items.CurrentPosition > 0 ) ){
TabControl1.Items.Remove(TabControl1.Items.CurrentItem);
}
porem se eu tentar cria-lo novamente, da um erro na linha.: " cadcli.Content = pForm; "
onde esta o erro, quem pode me dar uma dica
Valeu.
Respostas
-
Na hora de remover o tab, limpe seu conteúdo. Creio que isso resolva:
if ((TabControl1.Items.Count > 1) && (TabControl1.Items.CurrentPosition > 0)) { TabItem tab = (TabItem)TabControl1.Items.CurrentItem; tab.Content = null; TabControl1.Items.Remove(TabControl1.Items.CurrentItem); }
- Sugerido como Resposta AndreAlvesLimaModerator terça-feira, 2 de novembro de 2010 15:32
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 11 de novembro de 2010 21:52
Todas as Respostas
-
Olá Otoni,
- Qual é a mensagem de erro, exatamente?
- Pode mostrar como você está fazendo a chamada ao método CriarTab?
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com -
Ola Caio,
a Chamada está sendo feita assim.:
.....
public
partial class Window1{
FrCadCli frcadcli = new FrCadCli(); ......
private
void MnuCadCli_Click(object sender, RoutedEventArgs e) { // Verifico se o TabItem já exite
if (TabControl1.Items.OfType<TabItem>().FirstOrDefault(tab => tab.Header.ToString() == "Cliente") == null){
// chamo o métdo
"Cliente","FrCadCli", frcadcli);
CriaTab(}
// vou para o tabitem criado
TabItem>().First(tab => tab.Name.ToString() == "FrCadCli");
TabControl1.SelectedItem = TabControl1.Items.OfType<}
-----------------------------------------------------------------------------------------------
// o erro q/ é gerado quando eu tento criar novamente o Tabitem, anteriormente removido.
{"Specified element is already the logical child of another element. Disconnect it first."}
Caio, eu entendi o erro, mais não sei como resolve-lo.
Valeu, Mauro. -
Na hora de remover o tab, limpe seu conteúdo. Creio que isso resolva:
if ((TabControl1.Items.Count > 1) && (TabControl1.Items.CurrentPosition > 0)) { TabItem tab = (TabItem)TabControl1.Items.CurrentItem; tab.Content = null; TabControl1.Items.Remove(TabControl1.Items.CurrentItem); }
- Sugerido como Resposta AndreAlvesLimaModerator terça-feira, 2 de novembro de 2010 15:32
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 11 de novembro de 2010 21:52