private void bSave_Click(object sender, EventArgs e) { var bytes = new List <byte>(); for (int j = 0; j < boxes.Count; j++) { var vt = valueTypes[j]; string tbText = boxes[j].Text; NumberStyles numStyle = NumberStyles.Any; if (tbText.StartsWith("0x")) { numStyle = NumberStyles.HexNumber; tbText = tbText.Substring(2); } if (!boxes[j].Enabled) { continue; } switch (vt) { case ElementValueType.Byte: { byte b; if (!byte.TryParse(tbText, numStyle, null, out b)) { MessageBox.Show("Invalid byte: " + tbText, "Error"); return; } bytes.Add(b); break; } case ElementValueType.Short: { short s; if (!short.TryParse(tbText, numStyle, null, out s)) { MessageBox.Show("Invalid short: " + tbText, "Error"); return; } byte[] conv = TypeConverter.ss2h(s); bytes.Add(conv[0]); bytes.Add(conv[1]); break; } case ElementValueType.UShort: { ushort s; if (!ushort.TryParse(tbText, numStyle, null, out s)) { MessageBox.Show("Invalid ushort: " + tbText, "Error"); return; } byte[] conv = TypeConverter.s2h(s); bytes.Add(conv[0]); bytes.Add(conv[1]); break; } case ElementValueType.Int: { int i; if (!int.TryParse(tbText, numStyle, null, out i)) { MessageBox.Show("Invalid int: " + tbText, "Error"); return; } byte[] conv = TypeConverter.si2h(i); bytes.AddRange(conv); break; } case ElementValueType.UInt: { uint i; if (!uint.TryParse(tbText, numStyle, null, out i)) { MessageBox.Show("Invalid uint: " + tbText, "Error"); return; } byte[] conv = TypeConverter.i2h(i); bytes.AddRange(conv); break; } case ElementValueType.Float: { float f; if (!float.TryParse(tbText, numStyle, null, out f)) { MessageBox.Show("Invalid float: " + tbText, "Error"); return; } byte[] conv = TypeConverter.f2h(f); bytes.AddRange(conv); break; } case ElementValueType.FormID: { uint i; if (!uint.TryParse(tbText, NumberStyles.AllowHexSpecifier, null, out i)) { MessageBox.Show("Invalid formID: " + tbText, "Error"); return; } byte[] conv = TypeConverter.i2h(i); bytes.AddRange(conv); break; } case ElementValueType.String: { byte[] conv = System.Text.Encoding.Default.GetBytes(tbText); bytes.AddRange(conv); bytes.Add(0); break; } case ElementValueType.BString: { bytes.AddRange(TypeConverter.s2h((ushort)tbText.Length)); bytes.AddRange(System.Text.Encoding.Default.GetBytes(tbText)); break; } case ElementValueType.IString: { bytes.AddRange(TypeConverter.si2h(tbText.Length)); bytes.AddRange(System.Text.Encoding.Default.GetBytes(tbText)); break; } case ElementValueType.LString: { uint i; var ltag = boxes[j].Tag as lTag; if (ltag != null) { if (!ltag.cb.Checked) { if (!uint.TryParse(ltag.id.Text, NumberStyles.AllowHexSpecifier, null, out i)) { MessageBox.Show("Invalid string id: " + ltag.id.Text, "Error"); return; } byte[] conv = TypeConverter.i2h(i); bytes.AddRange(conv); } else { byte[] conv = System.Text.Encoding.Default.GetBytes(ltag.str.Text); bytes.AddRange(conv); bytes.Add(0); } } break; } case ElementValueType.Str4: { var txtbytes = new byte[] { 0x32, 0x32, 0x32, 0x32 }; System.Text.Encoding.Default.GetBytes(tbText, 0, Math.Min(4, tbText.Length), txtbytes, 0); bytes.AddRange(txtbytes); } break; default: throw new ApplicationException(); } } sr.SetData(bytes.ToArray()); Close(); }