/// <summary> /// コントロールのマッピングを検証しているときに発生します。 /// </summary> /// <param name="sender">実行発生オブジェクト。</param> /// <param name="e">ControlMappingEventArgs オブジェクト。</param> protected virtual void OnControlMapping(object sender, ControlMappingEventArgs e) { ControlMapping?.Invoke(sender, e); }
/// <summary> /// 選択されたアイテムの内容を、指定されたコントロールへマッピングを行います。 /// </summary> /// <param name="fieldTextMaps">FieldControlMap オブジェクト。</param> /// <param name="item">選択されたアイテムオブジェクト。</param> public void Map(FieldControlMapBase[] fieldTextMaps, object item) { if (item == null) { foreach (var m in fieldTextMaps) { var tree = CreateFieldItemTree(m.FieldName); var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, null); ControlMapping?.Invoke(this, mappingEa); if (mappingEa.Cancel) { continue; } MapToControl(m.Control, null); var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, null); ControlMapped?.Invoke(this, mappedEa); } return; } // SelectedItem が DataRowの場合 var row = item as DataRow; if (row != null) { foreach (var m in fieldTextMaps) { if (!row.Table.Columns.Contains(m.FieldName)) { throw new ArgumentException("指定されたプロパティは無効です。:" + m.FieldName); } var value = row[m.FieldName]; var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, value); ControlMapping?.Invoke(this, mappingEa); if (mappingEa.Cancel) { continue; } MapToControl(m.Control, value); var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, value); ControlMapped?.Invoke(this, mappedEa); } return; } // SelectedItem が DataRow 以外の objectの場合 foreach (var m in fieldTextMaps) { var tree = CreateFieldItemTree(m.FieldName); var value = GetTargetValue(tree, item); var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, value); ControlMapping?.Invoke(this, mappingEa); if (mappingEa.Cancel) { continue; } MapToControl(m.Control, value); var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, value); ControlMapped?.Invoke(this, mappedEa); } }