Текстовое поле не работает - PullRequest
       1

Текстовое поле не работает

0 голосов
/ 05 сентября 2010

Я использую C # и Visual Studio 2005.

Я создал несколько Texbox во время выполнения в FlowlayoutPanel. Это работает нормально, но когда я пытаюсь избавиться от пустых текстовых полей и поместить сообщение, как показано ниже.

    void tbb_KeyPress(object sender, KeyPressEventArgs e)
    {
        if ((Keys)e.KeyChar == Keys.Enter)
        {
            listBox2.Visible = false;
            button4.Visible = false;
            if (tbb.Text!="")
            {
                bb.Visible = true;
                bb.Focus();
            }
            else
            {
                //tbb.Visible = false;
                tbb.Dispose();
                bb.Dispose();
                textBox2.Visible = true;
                textBox2.Focus();
            }
        }
    }

Приведенный выше код отлично работает и хорошо работает во время выполнения. Код сохранения данных:

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
    if ((Keys)e.KeyChar == Keys.Enter)
    {
        if (bb.Text == "")
        {
            MessageBox.Show("Sorry Empty.Row");
            this.flowLayoutPanel1.Controls.Clear();
            label13.Text = "";
            textBox1.Text = "";
            textBox2.Text = "";
            maskedTextBox1.Text = "";
            maskedTextBox1.Enabled = true;
            maskedTextBox1.Focus();
            textBox1.Enabled = true;
        }
        else
        {
            string connstr = "server=.;initial catalog= maa;uid=mah;pwd=mah";
            SqlConnection con = new SqlConnection(connstr);
            con.Open();

            SqlCommand cmd1 = new SqlCommand("insert into debankA(companyID,transID,date,bank,totdepo,narrat) values " +
            "(@companyID,@transID,Convert(datetime,'" + maskedTextBox1.Text.ToString() + "',103),@bank,@totdepo,@narrat)", con);
            cmd1.Parameters.Add("@bank", SqlDbType.VarChar).Value = textBox1.Text;
            cmd1.Parameters.Add("@totdepo", SqlDbType.Decimal).Value = label13.Text;
            cmd1.Parameters.Add("@narrat", SqlDbType.VarChar).Value = textBox2.Text;
            cmd1.Parameters.Add("@companyID", SqlDbType.Int).Value = label6.Text;
            cmd1.Parameters.Add("@transID", SqlDbType.Int).Value = textBox4.Text;
            cmd1.ExecuteNonQuery();

            string pparticulars = null;
            double? depo = null;
            string messs = "Record Save Successfully";
            foreach (Control ctl in this.flowLayoutPanel1.Controls)
            {
                if (ctl.Name.Contains("tbb") && ctl is TextBox)
                {
                    pparticulars = ctl.Text;
                }

                if (ctl.Name.Contains("bb") && ctl is TextBox)
                {
                    double ddepo = 0;

                    if (double.TryParse(ctl.Text, out ddepo))

                        depo = ddepo;

                    if (pparticulars != null && depo != null)
                    {
                        SqlCommand cmd = new SqlCommand("insert into debankB(particulars,deposit,companyID,transID)values" +
                        "(@particulars,@deposit,@companyID,@transID)", con);
                        cmd.Parameters.Add("@particulars", SqlDbType.VarChar).Value = pparticulars;
                        cmd.Parameters.Add("@deposit", SqlDbType.Decimal).Value = depo;
                        cmd.Parameters.Add("@companyID", SqlDbType.Int).Value = label6.Text;
                        cmd.Parameters.Add("@transID", SqlDbType.Int).Value = textBox4.Text;
                        cmd.ExecuteNonQuery();
                        pparticulars = null;
                        depo = null;

                        MessageBox.Show(messs);
                        messs = null;
                        this.flowLayoutPanel1.Controls.Clear();
                        label13.Text = "";
                        textBox1.Text = "";
                        textBox2.Text = "";
                        maskedTextBox1.Text = "";
                        maskedTextBox1.Enabled = true;
                        maskedTextBox1.Focus();
                        textBox1.Enabled = true;
                    }

Несмотря на то, что я удалил оба пустых текстовых поля, в сообщении всегда отображается только "empty.records", как указано выше.

Это означает, что пустые текстовые поля не располагаются. Но если это правда, тогда, когда я запустил приложение и создал текстовые поля, где есть доступные данные, он остается тем же, а пустые текстовые поля не видны. Ликвидация при входе.

Я не понимаю, в чем проблема. Если текстовое поле расположено во время выполнения, то как оно может быть пустым?

1 Ответ

2 голосов
/ 05 сентября 2010

Чего вы пытаетесь достичь, избавившись от элементов управления?

Удаление объекта означает, что вы приказываете ему удалить все неуправляемые ресурсы, потому что вы больше не собираетесь использовать объект. Для элемента управления winform, такого как TextBox, это означает, что он освобождает фактический элемент управления Windows, но это не означает, что объект TextBox исчезает.

Если вы хотите удалить элементы управления со страницы, сначала вы должны удалить объект из дерева элементов управления, а затем удалить его. Если вы просто утилизируете его, вы оставите объект управления на странице, но без соответствующего оконного элемента управления для отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...