void ClientMessageGridGridSelectionChanged(object sender, EventArgs e) { try { _fieldTable.BeginLoadData(); _fieldTable.Clear(); Fix.Message message = SelectedMessage; if (message == null) { return; } switch (message.Status) { case Fix.MessageStatus.Error: _statusMessage.ForeColor = Color.White; _statusMessage.BackColor = Color.Red; break; case Fix.MessageStatus.Warn: _statusMessage.ForeColor = Color.Black; _statusMessage.BackColor = Color.Yellow; break; case Fix.MessageStatus.Info: _statusMessage.ForeColor = Color.White; _statusMessage.BackColor = Color.DodgerBlue; break; case Fix.MessageStatus.None: _statusMessage.ForeColor = SystemColors.ControlText; _statusMessage.BackColor = SystemColors.Control; break; } _statusMessage.Text = message.StatusMessage; foreach (Fix.Field field in message.Fields) { if (_fieldTable.NewRow() is not FieldDataRow dataRow) { continue; } if (field.Definition == null && message.Definition != null) { field.Definition = FieldDefinition(message.Definition, field); } dataRow.Field = field; if (field.Definition != null) { dataRow[FieldDataTable.ColumnIndent] = field.Definition.Indent; dataRow[FieldDataTable.ColumnName] = field.Definition.Name; dataRow[FieldDataTable.ColumnCustom] = false; dataRow[FieldDataTable.ColumnRequired] = field.Definition.Required; dataRow[FieldDataTable.ColumnDescription] = field.ValueDescription; } else { dataRow[FieldDataTable.ColumnCustom] = true; dataRow[FieldDataTable.ColumnRequired] = false; } dataRow[FieldDataTable.ColumnTag] = field.Tag; dataRow[FieldDataTable.ColumnValue] = field.Value; _fieldTable.Rows.Add(dataRow); } } finally { _fieldTable.EndLoadData(); } }
void MessageGridSelectionChanged(object sender, EventArgs e) { try { _fieldTable.BeginLoadData(); _fieldTable.Rows.Clear(); Fix.Message message = SelectedMessage; if (message == null) { return; } foreach (Fix.Field field in message.Fields) { if (_fieldTable.NewRow() is not FieldDataRow dataRow) { continue; } if (field.Definition == null) { field.Definition = Session.FieldDefinition(message, field); } dataRow.Field = field; if (field.Definition != null) { dataRow[FieldDataTable.ColumnIndent] = field.Definition.Indent; dataRow[FieldDataTable.ColumnName] = field.Definition.Name; dataRow[FieldDataTable.ColumnCustom] = false; dataRow[FieldDataTable.ColumnRequired] = field.Definition.Required; dataRow[FieldDataTable.ColumnDescription] = field.ValueDescription; } else { dataRow[FieldDataTable.ColumnCustom] = true; dataRow[FieldDataTable.ColumnRequired] = false; } dataRow[FieldDataTable.ColumnTag] = field.Tag; dataRow[FieldDataTable.ColumnValue] = field.Value; _fieldTable.Rows.Add(dataRow); } string text; using (MemoryStream stream = new()) using (Fix.Writer writer = new(stream, true)) { writer.Write(message); writer.Close(); text = Encoding.UTF8.GetString(stream.GetBuffer()); } _rawMessage.Text = text; switch (message.Status) { case Fix.MessageStatus.Error: _statusMessage.ForeColor = Color.White; _statusMessage.BackColor = Color.Red; break; case Fix.MessageStatus.Warn: _statusMessage.ForeColor = Color.Black; _statusMessage.BackColor = Color.Yellow; break; case Fix.MessageStatus.Info: _statusMessage.ForeColor = Color.White; _statusMessage.BackColor = Color.DodgerBlue; break; case Fix.MessageStatus.None: _statusMessage.ForeColor = SystemColors.ControlText; _statusMessage.BackColor = SystemColors.Control; break; } _statusMessage.Text = message.StatusMessage; MessageSelected?.Invoke(message); ApplyFieldSearch(); } finally { _fieldTable.EndLoadData(); UpdateUiState(); } }