C#按钮单击并取消单击操作

时间:2015-04-15 16:17:40

标签: c# winforms

点击执行以下代码时,我有一个按钮(名为:open port):

private void button1_Click(object sender, EventArgs e)     
{
   try
   {
      if (!serialPort1.IsOpen)
      {    
          serialPort1.Open();                         
      }
      else
      {
         MessageBox.Show("Port is Open by other party!");    
      }   
   }
   catch (UnauthorizedAccessException ex)
   {
      MessageBox.Show(ex.Message);
   }
}

我想做的是:

  1. 按住该按钮并将其名称更改为(关闭端口)
  2. 我按下它,我希望它执行以下代码:

    serialPort1.Close();
    Form1 myForm = new Form1();
    this.Close();
    
  3. 你可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

如果您只想要一个切换打开和关闭端口的按钮,那么只需执行以下操作即可:

private void button1_Click(object sender, EventArgs e)     
{
  try
  {
    if (!serialPort1.IsOpen)
    {    
      serialPort1.Open();
      this.button1.Text = "Close Port";                   
    }
    else
    {
      serialPort1.Close();
      this.button1.Text = "Open Port";  
    }   
  }
  catch (UnauthorizedAccessException ex)
  {
    MessageBox.Show(ex.Message);
  }
}

至于额外的代码:

Form1 myForm = new Form1();
this.Close();

Form1的新实例一旦超出范围就会被处置,关闭this表单意味着您不再拥有任何UI。

答案 1 :(得分:0)

您在winform中接近切换按钮的最接近的事情是使用必须添加到ToolStrip的ToolStripButton。

将ToolStripButton.CheckOnClick设置为true,然后对ToolStripButton.CheckStateChangedEvent进行编码。

private void toolStripButton1_CheckStateChanged(object sender, EventArgs e)
{
    // Checked means it's clicked
    if (toolStripButton1.Checked)
    {
        if (!serialPort1.IsOpen)
        {
            serialPort1.Open();
            toolStripButton1.Text = "Close Port";
        }
    }
    else
    {
        if (serialPort1.IsOpen())
        {
            serialPort1.Close();
            toolStripButton1.Text = "Open Port";
        }
    }
}