0

我编写了这段代码来更改serialport名称:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {    
        serialPort1.PortName = (string)comboBox1.SelectedValue;
    }
    catch (Exception)
    { 
        MessageBox.Show("The SerialPorts's Name Does Not Change !! "); 
    }
}

结果是我得到一个Exception. 的SerialPort名字永远不会改变。

4

5 回答 5

1

可能是众多问题之一。

  1. (string)comboBox1.SelectedValue String.Empty吗?
  2. (string)comboBox1.SelectedValue null吗?
  3. serialPort1 是否打开?

如果我们有实际的异常消息,而不是您定义的自定义消息,那么回答这个问题会更容易。

于 2013-01-23T19:31:54.467 回答
0

使用SelectedValueJaredPar 先生 MSFT 解释ComboBox SelectedItem, SelectedValue, SelectedWhat???.

我猜,你试图得到的PortName不是SelectedValue

解决方案

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == -1) return;
    if (string.IsNullOrWhiteSpace(comboBox1.Text)) return;
    serialPort1.PortName = comboBox1.Text;
}

或者

你试图得到的SelectedValue不是PortName

解决方案

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedValue == null) return;
    if (string.IsNullOrWhiteSpace(comboBox1.Text)) return;
    serialPort1.PortName = (int)comboBox1.SelectedValue ;
}

尝试检查您的属性ComboBox

在此处输入图像描述

其中:Display Member是您的PortName
        值 Member是您的PortIdSelectedValue
于 2013-01-23T19:48:10.933 回答
0

您必须检查 SelectedIndex 是否为 -1 或 SelectedValue(或 SelectedItem)是否为空。这是没有选定项目时的值。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == -1)
        return;

    serialPort1.PortName = (string)comboBox1.SelectedValue;
}
于 2013-01-23T19:28:08.693 回答
0

为了弄清楚异常消息是什么,试试这个:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {    
        serialPort1.PortName = (string)comboBox1.SelectedValue;
    }
    catch (Exception ex) { 
        MessageBox.Show(ex.Message);
    }
}
于 2013-01-23T19:28:26.797 回答
0

问题是您没有正确处理异常。抛出的异常可能会告诉您问题出在哪里,但您并没有看到它。

将您的 catch 语句更改为

catch (Exception e) { MessageBox.Show(e.Message); }

然后查看异常是什么,并相应地修复它。

SerialPort.PortName设置器可以抛出一组异常,因此您需要知道是哪个异常。

于 2013-01-23T19:29:50.093 回答