如何简化此“清除”命令?

时间:2019-10-08 00:58:55

标签: c#

这是我的RESET按钮的代码。这很复杂而且很长。

cmd.exe

我很想知道我是否可以使用Looping或其他方式简化此命令?

1 个答案:

答案 0 :(得分:1)

您的示例绝对不是复杂。这很简单;毫无疑问,代码中发生了什么。而且,在我看来,时间并不长。我喜欢。

话虽这么说,如果您有很多代码可以清空多个文本框,则可以编写一个像这样的小方法:

//if notify is pressed
foreach ($rooms as $i) {
    if (isset($_POST['waiting' . $i])) {
        //Update ReadyTime to time of button press (UTC - 6 hours for Mountain Time)
        $sql2 = "UPDATE Main SET Status='Waiting', ReadyTime=TIME_FORMAT(DATE_ADD(LOCALTIME(), INTERVAL -6 HOUR), '%r') WHERE Room='" . $i . "'";

        //update record
        $conn->query($sql2);

        //send text
        $body = 'Room '.$i.' is ready!';
        $text($body);
    }
}

//get sql results (after changes)
$result = $conn->query($sql);
if ($result->num_rows >= 1) {
    //columns
    echo "<table><tr>
        <th>Room</th>
        <th>Status</th>
        <th>Ready Since:</th>
        <th>Notify</th>
        <th>Clear Time</th>
        <th>Delete Room</th>
        </tr>";

    while ($row = $result->fetch_assoc()) {

        echo "<tr>
              <td>" . $row["Room"] . "</td>
              <td>" . $row["Status"] . "</td>
              <td>" . $row["ReadyTime"] . "</td>
              <td><form method='post' id='form1'><button type='submit' name=waiting" . $row["Room"] . " ID='status' form='form1'>Notify Dentist</button></form></td>
              <td><form method='post' id='form2'><button type='submit' name=clear" . $row["Room"] . " ID='status' form='form2'>Clear</button></form></td>
              <td><form method='post' id='form3'><button type='submit' name=delete" . $row["Room"] . " ID='delete' form='form2'>Delete</button></form></td>
              </tr>";
        array_push($rooms, $row["Room"]);
    }
    }

然后用

调用
void ClearTextboxes(params TextBox[] args)
{
    foreach (var textbox in args) textbox.Text = string.Empty;
}

或者,如果您打算对表单上的每个文本框执行此操作,则可以执行以下操作:

ClearTextboxes(textBox1, textBox2, textBox3, textBox4, textBox5);

您可以对复选框和单选按钮执行类似的操作,例如

foreach (var textbox in this.Controls.OfType<TextBox>()) textbox.Text = string.Empty;

P.S。如果您确实想使代码更易于使用,则可以使用有意义的名称重命名这些控件,例如而不是foreach (var checkbox in this.Controls.OfType<CheckBox>()) checkbox.Checked = false; (或其他一些描述性名称)代替textBox1。这比缩短清晰的命令代码要大得多。