• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Dkid

Remover Textbox

5 mensagens neste tópico

Boas pessoal, tive a experimentar mais umas coisas no visual C# e como não podia deixar de ser, mais uma dúvida surgiu (eheh)

Objectivo do programa :

Quando clicar no devido botão adiciona 2 textbox no form :

        static int i;
        static int j;

        int X = 10;
        int Y = 20;
        int Z = 120;
        private void button1_Click(object sender, EventArgs e)
        {   
            TextBox Txt1= new TextBox();
            Controls.Add(Txt1);
            Txt1.Location = new Point(X, Y + i * 24);
            i++;

            TextBox Txt2 = new TextBox();
            Controls.Add(Txt2);
            Txt2.Location = new Point(Z, Y + j * 24);
            j++;
        }

Depois é que ficou dificil....

Criar um botão que fizesse o contrário...

Tentei assim :

private void button2_Click(object sender, EventArgs e)
        {
            TextBox Txt1 = // penso que o erro é estar igual ao botao que adiciona aqui nesta partel;
            Controls.Remove(Txt1);
            Txt1.Location = new Point(Z, Y + i * 24);
            i--;

            TextBox Txt2 = new TextBox(); // penso que seja aqui o meu erro
            Controls.Remove(Txt2);
            Txt2.Location = new Point(Z, Y + j * 24);
            j--;
        }

Muito obrigado pela vossa atenção

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, ja consegui, agora so me falta restituir o botao1 para se eu apagar ele nao continuar a mandar textbox para baixo...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Teste
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        static int i;
        static int j;

        int X = 10;
        int Y = 20;
        int Z = 120;


            TextBox Txt1 = new TextBox();  
            TextBox Txt2 = new TextBox();

        private void Form1_Load(object sender, EventArgs e)
        {

        }



        private void button1_Click(object sender, EventArgs e)
        {

            Controls.Add (Txt1);
            Txt1.Location = new Point(X, Y + (i * 24));
            i++;

            Controls.Add (Txt2);
            Txt2.Location = new Point(Z, Y + (j * 24));
            j++;
        }


        private void button2_Click(object sender, EventArgs e)
        {
           Controls.Remove(Txt1);
            Txt1.Location = new Point(-Z, -Y + (j * 24));
            --i;

            Controls.Remove(Txt2);
            Txt2.Location = new Point(-Z, -Y + (j * 24));
            --j; 
        }
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boax...

O teu codigo funciona ? ? ?

Porque da maneira que tens declarado o Txt1 e o Txt2, ele so vai ter 2 textbox no ecran .... vai move-los de sitio ....

E partindo do principio que isso foi uma gafe... ele somente vai remover as ultimas textbox inseridas ( a linha) e nao remover linha por linha, como seria de esperar..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo com o RVG.

O teu codigo so move as textbox na vertical. se o objectivo é esse então basta igualares o i e o j a 1 no botão 2.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        TextBox Txt1 = new TextBox();
        TextBox Txt2 = new TextBox();

        static int i = 1;
        static int j = 1;

        int X = 10;
        int Y = 20;
        int Z = 120;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Controls.Add(Txt1);
            Txt1.Location = new Point(X, Y + (i * 24));
            i++;

            Controls.Add(Txt2);
            Txt2.Location = new Point(Z, Y + (j * 24));
            j++;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Controls.Remove(Txt1);
            Txt1.Location = new Point(-Z, -Y + (i * 24));
            --i;

            Controls.Remove(Txt2);
            Txt2.Location = new Point(-Z, -Y + (j * 24));
            --j;

            X = 10;
            Y = 20;
            Z = 120;
            i = 1;
            j = 1;
        }
    }
}

Se o objectivo é ir acrescentando textboxes e depois ir removendo-as linha a linha então deves declarar as textbox dentro do botão 1 e depois adocionar-las.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        static int i = 1;
        static int j = 1;

        int X = 10;
        int Y = 20;
        int Z = 120;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            TextBox Txt1 = new TextBox();
            Txt1.Name = "txt1" + i;
            Controls.Add(Txt1);
            Txt1.Location = new Point(X, Y + (i * 24));
            i++;


            TextBox Txt2 = new TextBox();
            Txt2.Name = "txt2" + j;
            Controls.Add(Txt2);
            Txt2.Location = new Point(Z, Y + (j * 24));
            j++;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            --i;
            --j;
            Controls.RemoveByKey("txt1" + i);
            Controls.RemoveByKey("txt2" + j);
        }
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, RVG e skm obrigado pela atenção

Realmente o codigo nao estava a dar daquela maneira, so fazia 2 textbox e iam passando para baixo

Nao tava a entender que tinha de fazer isto :

            Txt2.Name = "txt2" + j;

Obrigado Skm, o objectivo era o teu segundo codigo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora