FlowLayOutPanel的问题

时间:2010-09-05 04:26:06

标签: visual-studio

我正在使用C#,Visual Studio 2005和SQL Server 2000。

我的问题如下。这是我的代码:

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
    if ((Keys)e.KeyChar == Keys.Enter)
    {
        foreach (Control abcl  in this.flowLayoutPanel1.Controls)
        {
            if (abcl.Name.Contains("bb") && abcl  is TextBox)
            {
                int indx = this.flowLayoutPanel1.Controls.Count-1;
                for (int i = 0; i < indx; i++)
                {
                    string mess = "Sorry Empty.Records";
                    if (this.flowLayoutPanel1.Controls[i].Text == "")
                    {
                        MessageBox.Show(mess);
                        mess = null;
                    }
                    else
                    {
                        string connstr = "server=.;initial catalog= myDataBase  pwd=mypasward";
                        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("Record Saved Successfully");
                                    messs = null;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

以上是flowlayoutpanel1上的多个文本框项目。有两个名为“tbb”和“bb”的文本框。问题是上面的工作正常,但只有时间与控件中的总文本框一样显示消息的问题。此代码中的else条件不能很好地工作。这就是两个消息显示而不是一个条件为真的原因。我不熟悉flowlayoutpanel。

1 个答案:

答案 0 :(得分:0)

因为你有外循环遍历屏幕上的所有控件。这将遍历屏幕上的两个文本框。然后在该循​​环中,您将再次浏览所有文本框 - 因此您将两次验证bb文本框。

相关问题