2010-09-05 65 views
0

我使用C#和Visual Studio 2005文本框處置

我已經FlowLayoutPanel中創建多個Texboxes在運行時無法正常工作。它工作正常,但是當我試圖處置空文本框並把消息像下面。

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」如上予設定。

這意味着空的文本框不會被丟棄。但是,如果這是真的,那麼當我運行應用程序並在可用數據的位置創建文本框時,它仍然是相同的,並且空的文本框不可見。處置輸入。

我不明白是什麼問題。如果文本框在運行時被丟棄,那麼它如何顯示爲空?

+0

請重新格式化您的代碼示例,並確保它們有效(大量缺少'}')。 – Oded 2010-09-05 07:56:44

+0

@Oded先生這是短代碼。你的意思是整個編碼定位。 – mahesh 2010-09-05 08:07:18

+0

@如果你願意,我會提交。告訴我。 – mahesh 2010-09-05 08:18:23

回答

2

你想通過處理控件來完成什麼?

處理對象意味着您告訴它刪除所有非託管資源,因爲您不再使用該對象。對於一個類似於TextBox的Winform控件,這意味着它釋放了實際的窗口控件,但這並不意味着該對象會消失。

如果你想從頁面中刪除控件,你應該首先從控件樹中刪除對象,然後你可以處理它。如果你只是處理它,你會在頁面中留下一個控制對象,但沒有顯示相應的窗口控件。

+0

好吧,先生我同意你,但你可以告訴我,如果我的應用程序需要繪製像文本框運行時的對象。它按照用戶需求按文本框的增量工作。但我想保留那些包含數據的文本框,並刪除或不想要任何文本框是空的比做什麼?你可以建議我先生。 – mahesh 2010-09-05 09:11:13

+0

不,先生,我在運行時創建文本框我只有那些包含數據的文本框。哪些文本框沒有數據可以刪除。 – mahesh 2010-09-05 16:17:19

+0

像文本框tb =新的文本框,它應該根據用戶的需要增加它可能三或四或更多。 – mahesh 2010-09-05 16:17:53