首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合框奇偶校验位

问组合框奇偶校验位
EN

Stack Overflow用户
提问于 2018-02-05 21:37:15
回答 2查看 1.2K关注 0票数 1

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

奇偶校验位是从组合框中选择的(无、奇、偶)。

代码语言:javascript
复制
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;
}

这段代码运行得很好,但是有没有更简单的方法来解决这个问题。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-05 21:48:06

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

代码语言:javascript
复制
comboBox1.DataSource = Enum.GetValues(typeof(System.IO.Ports.Parity));

然后,您可以使用SelectedItem属性,因为它包含具有相应类型System.IO.Ports.Parity的值!然后,只需转换SelectedItem,分配它,开关/大小写就会过时:

代码语言:javascript
复制
port.Parity = (System.IO.Ports.Parity)comboBox1.SelectedItem;

如果您尚未使用原始枚举填充组合框,则此方法将不起作用。

如果您使用的是本例中所示的简单string:

代码语言:javascript
复制
comboBox1.Items.Add("None");
comboBox1.Items.Add("Odd");
comboBox1.Items.Add("Even");
comboBox1.Items.Add("Mark");
comboBox1.Items.Add("Space");

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

代码语言:javascript
复制
port.Parity =  (Parity)Enum.Parse(typeof(Parity), comboBox1.SelectedItem.ToString());

我不建议使用第二种方法,用string填充它。第一个更健壮。如果您使用自定义枚举执行此操作,您将在将来合并这些更改。如果您很快决定向其添加值,您的combobox将自动扩展。

票数 3
EN

Stack Overflow用户

发布于 2018-02-05 21:43:39

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

代码语言:javascript
复制
public enum Parity { Even = 2, Odd = 1, None = 0 }

您可以通过以下方式转换结果

代码语言:javascript
复制
port.Parity = (Parity)comboBox1.SelectedIndex;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48623847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档