this.textValue.Size = new System.Drawing.Size(255, 23);\r
this.textValue.TabIndex = 87;\r
this.textValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
+ this.textValue.TextChanged += new System.EventHandler(this.textValue_TextChanged);\r
// \r
// textHex\r
// \r
this.textHex.Size = new System.Drawing.Size(255, 23);\r
this.textHex.TabIndex = 88;\r
this.textHex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
+ this.textHex.TextChanged += new System.EventHandler(this.textHex_TextChanged);\r
// \r
// bits0\r
// \r
Font mono = new Font(FontFamily.GenericMonospace, textHex.Font.Size);\r
textHex.Font = mono;\r
textValue.Font = mono;\r
-\r
+ BitChanged(null, null);\r
}\r
+\r
private void radioUint_CheckedChanged(object sender, EventArgs e)\r
{\r
if (radioUint.Checked)\r
}\r
}\r
\r
-\r
private byte[] GetBytes()\r
{\r
byte[] b = new Byte[length];\r
{\r
bits[i].Enabled = false;\r
}\r
+ textValue_TextChanged(null, null);\r
}\r
\r
private void BitChanged(object sender, EventArgs e)\r
{\r
byte[] b = GetBytes();\r
+ UpdateValue(b);\r
+ UpdateHex(b);\r
+ }\r
+\r
+ private void UpdateValue(byte[] bytes)\r
+ {\r
if (radioUint.Checked)\r
{\r
- UpdateUint(b);\r
+ UpdateUint(bytes);\r
}\r
else if (radioInt.Checked)\r
{\r
- UpdateInt(b);\r
+ UpdateInt(bytes);\r
}\r
else if (radioFloat.Checked)\r
{\r
- UpdateFloat(b);\r
+ UpdateFloat(bytes);\r
}\r
- UpdateHex(b);\r
}\r
- \r
+\r
private void UpdateUint(byte[] bytes)\r
{\r
ulong value = 0;\r
}\r
}\r
\r
+ private void UpdateBits(byte[] bytes)\r
+ {\r
+ int i = 0;\r
+ for (int j = 0; j < length; ++j)\r
+ {\r
+ int mask = 1;\r
+ for (int k = 0; k < 8; ++k)\r
+ {\r
+ bits[i++].SetStateWithoutEvent((bytes[j] & mask) != 0);\r
+ mask <<= 1;\r
+ }\r
+ }\r
+ }\r
+\r
+ private void textHex_TextChanged(object sender, EventArgs e)\r
+ {\r
+ if (!textHex.Focused)\r
+ {\r
+ return;\r
+ }\r
+ ulong value;\r
+ UInt64.TryParse(textHex.Text,\r
+ System.Globalization.NumberStyles.HexNumber, null, out value);\r
+ byte[] b = BitConverter.GetBytes(value);\r
+ UpdateBits(b);\r
+ UpdateValue(b);\r
+ }\r
+\r
+ private void textValue_TextChanged(object sender, EventArgs e)\r
+ {\r
+ string text = textValue.Text;\r
+ if (!textValue.Focused && e == EventArgs.Empty)\r
+ {\r
+ return;\r
+ }\r
+ byte[] b;\r
+ if (radioUint.Checked)\r
+ {\r
+ ulong value;\r
+ UInt64.TryParse(text, out value);\r
+ b = BitConverter.GetBytes(value);\r
+ }\r
+ else if (radioInt.Checked)\r
+ {\r
+ long value;\r
+ Int64.TryParse(text, out value);\r
+ b = BitConverter.GetBytes(value);\r
+ }\r
+ else if (radioFloat.Checked && length == 4)\r
+ {\r
+ float value;\r
+ Single.TryParse(text, out value);\r
+ b = BitConverter.GetBytes(value);\r
+ }\r
+ else if (radioFloat.Checked && length == 8)\r
+ {\r
+ double value;\r
+ Double.TryParse(text, out value);\r
+ b = BitConverter.GetBytes(value);\r
+ }\r
+ else\r
+ {\r
+ throw new Exception();\r
+ }\r
+ UpdateBits(b);\r
+ UpdateHex(b);\r
+ }\r
+\r
}\r
}\r