最近学习串口,用C#写了一个简单的串口通信界面,功能虽然实现了,但有些程序还是不太懂,主要是不知道功能是什么,代码如下: void BindParity()//校验位 { DataTable dt = new DataTable(); dt.Columns.Add("ValueMember"); dt.Columns.Add("DisplayMember"); for (int i = 0; i < 3; i++) { DataRow dr = dt.NewRow(); if (((int)Parity.None).Equals(i))//转换为int型数值,并判断是否与i值相同 { dr[0] = (int)Parity.None; dr[1] = Parity.None.ToString();//00 } if (((int)Parity.Odd).Equals(i)) { dr[0] = (int)Parity.Odd; dr[1] = Parity.Odd.ToString();//11 } if (((int)Parity.Even).Equals(i)) { dr[0] = (int)Parity.Even; dr[1] = Parity.Even.ToString();//22 } dt.Rows.Add(dr); } comboBox3.DataSource = dt; comboBox3.DisplayMember = "DisplayMember"; comboBox3.ValueMember = "ValueMember"; comboBox3.SelectedIndex = 0; } void stopbits() //停止位 { DataTable dt = new DataTable(); dt.Columns.Add("ValueMember"); dt.Columns.Add("DisplayMember"); for (int i = 0; i < 4; i++) { DataRow dr = dt.NewRow(); if (((int)StopBits.None).Equals(i)) { dr[0] = (int)StopBits.None; dr[1] = StopBits.None.ToString();//0 None } if (((int)StopBits.One).Equals(i)) { dr[0] = (int)StopBits.One; dr[1] = StopBits.One.ToString();//1 One } if (((int)StopBits.Two).Equals(i)) { dr[0] = (int)StopBits.Two; dr[1] = StopBits.Two.ToString();//2 Two } if (((int)StopBits.OnePointFive).Equals(i)) { dr[0] = (int)StopBits.OnePointFive; dr[1] = StopBits.OnePointFive.ToString();//3 OnePointFive } dt.Rows.Add(dr); } comboBox4.DataSource = dt; comboBox4.DisplayMember = "DisplayMember"; comboBox4.ValueMember = "ValueMember"; comboBox4.SelectedIndex = 1; } 以上代码是我从相关串口实例上看到的,我感觉C#写串口不需要调用这些函数啊!可为什么有些(很多)的例子中都调用了这两个函数,这两个函数的作用是什么??? |
|
5分 |
这不就是给两个下拉列表绑定数据吗
为了让用户能手动选择串口的参数呗 你总不能每次都代码写死吧 |
5分 |
一般我来做,会直接给控件显示”None”这个字符串,而不是Parity.None.ToString()这种东西
|
那可以使用comboBox4.Items.Add(“1”);来添加下拉列表吗? |
|
5分 |
这是给DataTable添加了2列,一列用来存放值,一列用来存放显示的文本,然后绑定下拉列表
毕竟你给串口对象设置参数的时候,使用的是枚举,如果你只添加文本而不添加值,那么获取到用户选择的文本之后,还要自己再写分支语句判断一下,再转换成枚举值.那样其实也可以的. |
额,这样都可以的,我主要是想知道如果不使用上面两个函数会有什么影响?我试了一下,不使用串口依然能通信啊(且也有下拉列表)!既然是这样,使用以上两个函数就没什么用了。。。。 |
|
哦,这样啊!我在Load中的确使用了分支语句,难怪感觉这两个函数没什么用了,多谢回答哈! |
|
2分 |
我自己做串口程序的时候,更习惯直接给下拉列表添加文本,然后在给串口初始化参数的函数里用分支语句转换成枚举赋值
因为我觉得为了俩下拉列表定义俩DataTable怪麻烦的,其实代码量差不多了 |
反正总归是要有文本和值的对应这个过程的,先对应还是后对应的问题罢了
上面的代码,就是先把文本和值对应,选择之后取出SelectedValue就直接是枚举了 |