|
本帖最后由 SUPER_CRJ 于 2020-6-16 15:35 编辑
查了一天了。
具体情况是:
因为要实时解析文本框中的数据。所以用了:TextBoxChanged事件。
但是此时:文本框则不正常了:
1:删除里面的内容,要删除两下,才能成功。而且光标移动到了开头。
2:输入内容也是:输入两下才可以。
仔细检查了相关代码:根本没有可以改变Text的代码。十分费解!!
代码如下(已经过压缩):
- { // 如果增加多个事件,则函数看来会比较乱。所以把众多事件统一处理,简化代码!
- for( int i = 0;i<1;i++ )
- { // 总共5个
- { // 取数据
- string inputData = (tabPage3.Controls["txb_sendData" + i.ToString()] as TextBox).Text;
- string str = Regex.Replace(inputData, @"((\d\s)|(\d\d))(\s*)", "$0" + " ");
- MatchCollection mc = Regex.Matches(str, @"\b[0-9a-fA-F]+\b");
- List<byte> buf = new List<byte>();
- foreach (Match m in mc)
- {
- buf.Add(byte.Parse(m.Value, System.Globalization.NumberStyles.HexNumber));
- }
- if (buf.Count > 8)
- {
- showMessageBoxLanguage("第 " + i.ToString() + " 行输入数据超过8字节,请重新输入", "Line " + i.ToString() + " :Input data exceeding 8 bytes, please reenter");
- }
- masterSend[i].dataLen = buf.Count;
- Array.Copy(buf.ToArray(), masterSend[i].dataBuf, buf.Count);
- }
- { // 出校验值
- if (masterSend[i].checkWay == 0)
- { // 标准校验
- masterSend[i].checkValue = dataCheck(masterSend[i].dataBuf, masterSend[i].dataLen, 0);
- (tabPage3.Controls["txb_checkValue" + i.ToString()] as TextBox).Text = masterSend[i].checkValue.ToString("X");
- }
- else if (masterSend[i].checkWay == 1)
- { // 增强校验
- masterSend[i].checkValue = dataCheck(masterSend[i].dataBuf, masterSend[i].dataLen, idParityQueryWay(masterSend[i].ID));
- (tabPage3.Controls["txb_checkValue" + i.ToString()] as TextBox).Text = masterSend[i].checkValue.ToString("X");
- }
- else
- { // 自定义校验
- masterSend[i].checkValue = byte.Parse((tabPage3.Controls["txb_checkValue" + i.ToString()] as TextBox).Text);
- }
- }
- }
- }
复制代码
源代码:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|