串口组合框

use*_*247 3 c# combobox

我正在为串口做一个项目..

我需要从组合框中选择可用的com端口.

但我无法得到它..我需要一些帮助〜

这是我的代码..它在C#中:

btn_Open是一个激活串口的按钮

    private void btnOpen_Click(object sender, EventArgs e)
    {
        string [] myPort;

        int COM1 = cbCommPorts.SelectedIndex;
        int COM2 = cbCommPorts.SelectedIndex;
        int COM3 = cbCommPorts.SelectedIndex;
        Object selectedItem = serialPort1.PortName;

        myPort = System.IO.Ports.SerialPort.GetPortNames();
        cbCommPorts.Items.AddRange(myPort);

        serialPort1.PortName = cbCommPorts.SelectedItem.ToString();
        serialPort1.BaudRate = 115200;

        if (serialPort1.IsOpen) {
            serialPort1.PortName = cbCommPorts.SelectedItem.ToString();

            serialPort1.Open();
            btnTransmit.Enabled = true;
            btn2.Enabled = true;
            btn3.Enabled = true;
        }
Run Code Online (Sandbox Code Playgroud)
  1. cbCommPorts是我为组合框得到的名字

    private void cbCommPorts_SelectedIndexChanged(object sender,EventArgs e){int COM1 = cbCommPorts.SelectedIndex; int COM2 = cbCommPorts.SelectedIndex; int COM3 = cbCommPorts.SelectedIndex; Object selectedItem = serialPort1.PortName;

        MessageBox.Show("COM PORT: " + selectedItem.ToString() + " Selected");
    }
    
    Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?谢谢..

Tim*_*hyP 5

这是您在Windows窗体中使用它的一种方法

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Load += Form1_Load;
    }

    void Form1_Load(object sender, EventArgs e)
    {
        var ports = SerialPort.GetPortNames();
        cmbSerialPorts.DataSource = ports;
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        if (cmbSerialPorts.SelectedIndex > -1)
        {
            MessageBox.Show(String.Format("You selected port '{0}'", cmbSerialPorts.SelectedItem));
            Connect(cmbSerialPorts.SelectedItem.ToString());
        }
        else
        {
            MessageBox.Show("Please select a port first");
        }
    }

    private void Connect(string portName)
    {
        var port = new SerialPort(portName);
        if (!port.IsOpen)
        {
            port.BaudRate = 19200;
            port.Open();
            //Continue here....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

话虽这么说,除非你要维护传统软件,否则看看WPF可能是个好主意.学习如何使用WPF而不是WinForms将为您在Windows 8,Windows Phone等上的开发做好准备......而数据绑定功能使您想要做的事情变得非常简单.