【问题标题】:Adding an IF statement添加 IF 语句
【发布时间】:2013-12-31 18:21:20
【问题描述】:

我想在这段代码中添加一个 if 语句,上面写着..

如果我单击此按钮,它将检查 ListU.SelectedValue 是否为空,如果为空,则显示“请在继续之前选择名称”的消息框,如果不为空,则代码运行。

我该怎么做?

这是按钮单击的代码。 (我知道,我的代码需要一些参数,我们可以暂时忽略它)

private void button4_Click(object sender, EventArgs e)
{
   //update code//
   SqlConnection conn = new SqlConnection();
   conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
   conn.Open();

   SqlDataAdapter daCount = new SqlDataAdapter("select iCount from ComDet where cName = @cName", conn);
   daCount.SelectCommand.Parameters.Add("@cName", SqlDbType.VarChar).Value = ListU.SelectedValue;

   DataTable dtC = new DataTable();
   daCount.Fill(dtC);
   DataRow firstRow = dtC.Rows[0];

   string x = firstRow["iCount"].ToString();
   int y = Int32.Parse(x);
   int z = y + 1;

   SqlCommand cmdC = conn.CreateCommand();
   cmdC.CommandText = "Update ComDet set iCount = " + z + ", ViewTime = '" + lblTime.Text + "', LastView = '" + txtUser2.Text + "' Where cName = '" + ListU.SelectedValue.ToString() + "'";

    cmdC.ExecuteNonQuery();
    conn.Close();

    var ufdet = new UserFullDetail(ListU.SelectedValue.ToString());
    ufdet.ShowDialog();
}

【问题讨论】:

  • ListU是个什么样的控件?下拉列表?还有什么?
  • 嗯,组合框是下拉列表,不是吗?
  • 与您的问题无关,您必须了解sql injection,并使用request parameters(您似乎在选择中使用它,为什么不在更新中使用参数?)跨度>
  • @Olivier - 这就是为什么我输入我知道我的代码需要一些参数的描述.. :) 我将在几秒钟内将我的所有代码更新为该方法.. :)
  • @MohdNasrulIwanFajaruddin 对,我没看到那部分 :)

标签: c# winforms button if-statement


【解决方案1】:
private void button4_Click(object sender, EventArgs e)
{
   if(ListU.SelectedValue == null || ListU.SelectedValue.ToString() == string.Empty)
   {
       MessageBox.Show("Select something from the listbox, please");
       return;
   }
   .....

【讨论】:

  • 没有必要。如果 IF 为真,则退出该方法,因此无需为其余代码添加 else
  • 顺便说一句,如果不添加else语句以这种方式返回是否正确,还有待商榷。理论上,每种方法都应该只有一个返回点,但对于像这样的简单情况,我发现遵循理论只是一种痛苦......
  • @Steve 那个理论已经过时并且存在争议。
【解决方案2】:

这样试试

private void button4_Click(object sender, EventArgs e)
{
if(ListU.SelectedValue == null || ListU.SelectedValue.ToString() == string.Empty)
   {
       MessageBox.Show("Select something from the listbox, please");      
   }
else
   {
   //update code//
   SqlConnection conn = new SqlConnection();
   conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
   conn.Open();

   SqlDataAdapter daCount = new SqlDataAdapter("select iCount from ComDet where cName = @cName", conn);
   daCount.SelectCommand.Parameters.Add("@cName", SqlDbType.VarChar).Value = ListU.SelectedValue;

   DataTable dtC = new DataTable();
   daCount.Fill(dtC);
   DataRow firstRow = dtC.Rows[0];

   string x = firstRow["iCount"].ToString();
   int y = Int32.Parse(x);
   int z = y + 1;

   SqlCommand cmdC = conn.CreateCommand();
   cmdC.CommandText = "Update ComDet set iCount = " + z + ", ViewTime = '" + lblTime.Text + "', LastView = '" + txtUser2.Text + "' Where cName = '" + ListU.SelectedValue.ToString() + "'";

    cmdC.ExecuteNonQuery();
    conn.Close();

    var ufdet = new UserFullDetail(ListU.SelectedValue.ToString());
    ufdet.ShowDialog();
    }
}

【讨论】:

  • 您的 return 语句是多余的,否则拼写错误。
【解决方案3】:

我更喜欢这个:

private void button4_Click(object sender, EventArgs e)
{
    if (ListU.SelectedItem == null)
    {
        MessageBox.Show("Please pick a name before continuing.");
    }
    else
    {
        // Run the code.
    }
}

这使得 else 条件显式化,而不是像 Steve 的示例中那样隐含。

另一种方法是仅在 ListU 中选择某些内容时才启用 button4,例如,

private void ListU_SelectedIndexChanged(object sender, System.EventArgs e)
{
    button4.Enabled = ListU.SelectedItem != null;
}

【讨论】:

【解决方案4】:

试试这个:

private void button4_Click(object sender, EventArgs e)
{
  if(ListU.SelectedValue == null || string.IsNullOrEmpty(Convert.ToString(ListU.SelectedValue)))
  {
    MessageBox.Show("Select something from the listbox.");
    return;
  }
.....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2019-05-01
    相关资源
    最近更新 更多