首页 > 解决方案 > 如何在 C# 中使用 Switch

问题描述

根据组合框中的选择,我有一些可能执行特定命令。我使用了 if 语句,但我发现几乎相同的代码在不止一种情况下重复。我的问题是:问题是否有一种简单的方法来做到这一点,比如使用 switch 语句?这是我用于每个按钮的代码:

        {
            if (cmbTrans.Text == "bad")
            {
                string istrue = "true";
                bool mybool = Convert.ToBoolean(istrue);
                trans.ADD_NEW_TRANS(Convert.ToInt32(txtID.Text), dtTransDate.Value, txtVibNO.Text, cmbSenderSite.Text, cmbRecievedSite.Text,
                        Convert.ToInt32(txtWorkHours.Text), Convert.ToInt32(cmbTrans.SelectedValue), Program.userInfo.UserName);
                vib.UPDATE_TRANS_ISOFF(txtVibNO.Text, mybool);

                MessageBox.Show("done", "done", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnSave.Enabled = false;
            if (cmbTrans.Text == "good")
            {
                string istrue = "false";
                bool mybool = Convert.ToBoolean(istrue);
                trans.ADD_NEW_TRANS(Convert.ToInt32(txtID.Text), dtTransDate.Value, txtVibNO.Text, cmbSenderSite.Text, cmbRecievedSite.Text,
                        Convert.ToInt32(txtWorkHours.Text), Convert.ToInt32(cmbTrans.SelectedValue), Program.userInfo.UserName);
                vib.UPDATE_TRANS_ISOFF(txtVibNO.Text, mybool);

                MessageBox.Show("done", "done", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnSave.Enabled = false;

               
            }

   if (cmbTrans.Text == "Send")
            {
                if (string.IsNullOrEmpty(cmbRecievedSite.Text) || string.IsNullOrEmpty(cmbSenderSite.Text))
                {
                    MessageBox.Show("Please specify the sender and the receiver", "!attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                string istrue = "true";
                bool mybool = Convert.ToBoolean(istrue);
                trans.ADD_NEW_TRANS(Convert.ToInt32(txtID.Text), dtTransDate.Value, txtVibNO.Text, cmbSenderSite.Text, cmbRecievedSite.Text,
                        Convert.ToInt32(txtWorkHours.Text), Convert.ToInt32(cmbTrans.SelectedValue), Program.userInfo.UserName);
                vib.UPDATE_TRANS_ISOFF(txtVibNO.Text, mybool);

                MessageBox.Show("done", "done", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnSave.Enabled = false;

            }
                          if (cmbTrans.Text == "Receive")
            {
                if (string.IsNullOrEmpty(cmbRecievedSite.Text) || string.IsNullOrEmpty(cmbSenderSite.Text))
                {
                    MessageBox.Show("Please specify the sender and the receiver", "!attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                string istrue = "true";
                bool mybool = Convert.ToBoolean(istrue);
                trans.ADD_NEW_TRANS(Convert.ToInt32(txtID.Text), dtTransDate.Value, txtVibNO.Text, cmbSenderSite.Text, cmbRecievedSite.Text,
                        Convert.ToInt32(txtWorkHours.Text), Convert.ToInt32(cmbTrans.SelectedValue), Program.userInfo.UserName);
                vib.UPDATE_TRANS_ISOFF(txtVibNO.Text, mybool);

                MessageBox.Show("done", "done", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnSave.Enabled = false;

               
            }
  
            }```

标签: c#

解决方案


创建一个函数并调用该函数。

public void Foo()
{
                string istrue = "true";
                bool mybool = Convert.ToBoolean(istrue);
                trans.ADD_NEW_TRANS(Convert.ToInt32(txtID.Text), dtTransDate.Value, txtVibNO.Text, cmbSenderSite.Text, cmbRecievedSite.Text,
                        Convert.ToInt32(txtWorkHours.Text), Convert.ToInt32(cmbTrans.SelectedValue), Program.userInfo.UserName);
                vib.UPDATE_TRANS_ISOFF(txtVibNO.Text, mybool);

                MessageBox.Show("done", "done", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnSave.Enabled = false;
}

你可以像这样使用开关

        switch (cmbTrans.Text)
        {
            case "Good": //this is mean if(cmbTrans.Text == "Good")
                {
                    Foo();
                    //code
                    break;
                }
            default:
                break;
        }

推荐阅读