组合框奇偶校验位

时间:2018-02-05 13:37:15

标签: c# serial-port

我有一个程序,用户可以选择comport,波特率和奇偶校验位来建立串行通信。

从组合框(无,奇数,偶数)中选择奇偶校验位。

int Parity = comboBox1.SelectedIndex;

switch (Parity) //Parity
{
    case 0:
    port.Parity = Parity.None;
    break;

    case 1:
    port.Parity = Parity.Odd;
    break;

    case 2:
    port.Parity = Parity.Even;
    break;
}

这段代码工作正常,但是有一种更简单的方法可以解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:3)

如果使用类型Parity的值填充组合框。例如:

comboBox1.DataSource = Enum.GetValues(typeof(System.IO.Ports.Parity));

然后你可以使用SelectedItem属性,因为它保存了相应类型System.IO.Ports.Parity的值!然后简单地转换SelectedItem,分配它并且开关/案例变得过时:

port.Parity = (System.IO.Ports.Parity)comboBox1.SelectedItem;

如果您没有使用原始枚举来填充组合框,那么这种方法将无效。

如果你在这个例子中使用了简单的string

comboBox1.Items.Add("None");
comboBox1.Items.Add("Odd");
comboBox1.Items.Add("Even");
comboBox1.Items.Add("Mark");
comboBox1.Items.Add("Space");

您可以Parse将它们放入枚举值中,然后进行转换:

port.Parity =  (Parity)Enum.Parse(typeof(Parity), comboBox1.SelectedItem.ToString());

我不建议使用string填充第二种方法。第一个更强大。如果您使用自定义枚举枚举,则将在以后合并更改。如果您很快决定为其添加值,则组合框将自动扩展。

答案 1 :(得分:1)

如果您能够更改枚举的定义

public enum Parity { Even = 2, Odd = 1, None = 0 }

您可以按

投射结果
port.Parity = (Parity)comboBox1.SelectedIndex;