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つである可能性があります。

  1. ですか(string)comboBox1.SelectedValue String.Empty
  2. ですか(string)comboBox1.SelectedValue null
  3. serialPort1は開いていますか?

定義したカスタムメッセージではなく、実際の例外メッセージがあれば、質問に答える方が簡単です。

于 2013-01-23T19:31:54.467 に答える
0

SelectedIndexが-1であるか、SelectedValue(またはSelectedItem)がnullであるかを確認するには、チェックインする必要があります。これは、選択されたアイテムがない場合の値です。

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 に答える
0

SelectedValueMr. JaredPar 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

ここに画像の説明を入力してください

ここで、 DisplayMemberはPortNameValueです。MemberPortId
        またはSelectedValueです
于 2013-01-23T19:48:10.933 に答える