如果fun1做了fun2,否则不要做fun2

时间:2013-11-20 20:09:05

标签: c# function

我正在研究C#项目,所以我有2个函数,我只需要完成function1然后我希望函数2执行,否则函数2必须阻止执行(Didnot Execute !!)。

我的功能1称为SaveDuplicatCourse(),功能2称为Save(),彼此的代码如下:

public void SaveDuplicatCourse()
{
   if(con.State !=ConnectionState.Open)
      con.Open();
   List<int> IDs = new List<int>();
   foreach (DataGridViewRow r in dataGridViewStudents.Rows)
   {
      if (r.Cells[0].Value != null && bool.Parse(r.Cells[0].Value.ToString()))
      {
         IDs.Add(int.Parse(r.Cells[1].Value.ToString()));
      }
   }
   foreach (int i in IDs)
   {
      try
      {
         SqlCommand com = new SqlCommand(@"Insert into DuplicateCourses 
                                           values(" + i + "," + CCID + ")", con);
         com.ExecuteNonQuery();
      }
      catch (Exception)
      {
         MessageBox.Show("They are exist");
      }
   }
   con.Close();
}

public void Save()
{
   SqlCommand com = new SqlCommand(@"Delete from students 
                                     where 
                                     Course_ID = " + ID, con);
   con.Open();
   com.ExecuteNonQuery();

   List<int> IDs = new List<int>();
   foreach (DataGridViewRow r in dataGridViewStudents.Rows)
   {
      if (r.Cells[0].Value!=null && bool.Parse(r.Cells[0].Value.ToString()))
      {
         IDs.Add(int.Parse(r.Cells[1].Value.ToString()));
      }
   }

   foreach (int i in IDs)
   {
      com.CommandText = "Insert into students values(" + i + "," + ID + ")";
      com.ExecuteNonQuery();
   }
   con.Close();
}

我在ButtonClick中调用了这些函数,如下所示

private void buttonSaveChanges_Click(object sender, EventArgs e)
{
   SaveDuplicatCourse();
   Save();
}

请告诉我将如何完成。

2 个答案:

答案 0 :(得分:1)

在您的示例中,我没有看到异步发生的任何事情,因此您的代码应该以您正在寻找的方式执行。现在,如果你要求成功执行(而不是任何不成功的,即没有删除行),这是一个不同的故事,并且可以以各种不同的方式处理。但在我们走这条路之前,似乎你已经得到了理想的结果。设置断点并逐步执行每行代码以查看执行顺序。

答案 1 :(得分:1)

向function1添加boolean值。如果返回false,请不要运行function2。如果返回true,则运行function2。

boolean saveDuplicateCourseCompleted = false;

private void buttonSaveChanges_Click(object sender, EventArgs e)
{
   if (saveDuplicateCourseCompleted == true)
      Save();
   else
      // or do something else.        
}

请注意以下示例:

public boolean SaveDuplicatCourse()
{
    if(con.State !=ConnectionState.Open)
        con.Open();
    List<int> IDs = new List<int>();
    foreach (DataGridViewRow r in dataGridViewStudents.Rows)
    {
        if (r.Cells[0].Value != null && bool.Parse(r.Cells[0].Value.ToString()))
        {
            IDs.Add(int.Parse(r.Cells[1].Value.ToString()));
        }
    }
    foreach (int i in IDs)
    {
       try
       {
          SqlCommand com = new SqlCommand(@"Insert into DuplicateCourses 
             values(" + i + "," + CCID + ")", con);
          com.ExecuteNonQuery();
       }
       catch (Exception)
       {
          MessageBox.Show("They are exist");
          saveDuplicateCourseCompleted=false// Now this is right way
       }
    }
    con.Close();

}