Нажимайте кнопки С# и отключайте действия

Вопрос:

У меня есть кнопка (named: 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();
    

можешь мне помочь?

Лучший ответ:

Если вы просто хотите кнопку, которая переключает открытие и закрытие порта, то этого должно быть достаточно, чтобы сделать следующее:

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 формы означает, что у вас больше нет пользовательского интерфейса.

Ответ №1

Самое близкое, что вы получите к кнопке переключения в winform, это использование ToolStripButton, которое вы должны добавить в ToolStrip.

Установите для параметра ToolStripButton.CheckOnClick значение true, а затем код ToolStripButton.CheckStateChangedEvent.

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

Оцените статью
TechArks.Ru
Добавить комментарий