private void CloseClone(object sender, CloningEventArgs e) { f0t0page page = sender as f0t0page; if (page != null) { page.ReAssemble(); page.IsCloned = false; page.UpdateText(e.MainPictureName); page.fotobox.UpdateAll(); } }
private void InitClone(object sender, CloningEventArgs e) { f0t0page page = sender as f0t0page; if (page != null) { //Thread.Sleep(200); //wait a few millsecs for stuff. this.splitContainer.SplitterDistance = this.splitContainer.Parent.Width; page.IsCloned = true; page.fotobox.UpdateAll(); page.UpdateText(e.MainPictureName); page.Retract(); } }
public static object Clone(Type sourceType, object source, Type cloneType, EventHandler <CloningEventArgs> cloning, object sender = null) { if (cloneType == null) { cloneType = sourceType; } var clone = Activator.CreateInstance(cloneType); string clonePrimarykeyName = null; try { clonePrimarykeyName = GetSqlPrimaryKeyName(cloneType); } catch (MissingSqlPrimaryKeyAttributeException) { } var fieldNamingType = GetSqlFieldNamingType(cloneType); Func <PropertyInfo, bool> piFunc = x => { if (!x.CanWrite || !x.CanRead) { return(false); } if (x.HasCustomAttribute <IgnoreAttribute>()) { return(false); } if (clonePrimarykeyName != null) { var name = GetFieldName(x, fieldNamingType); if (name == clonePrimarykeyName) { return(false); } } return(true); }; var sourceProperties = sourceType.GetProperties().Where(piFunc).ToArray(); var cloneProperties = cloneType != sourceType?cloneType.GetProperties().Where(piFunc).ToArray() : sourceProperties; foreach (var sourcePi in sourceProperties) { var clonePi = cloneProperties.SingleOrDefault(x => x.Name == sourcePi.Name); if (clonePi != null) { clonePi.SetValue(clone, sourcePi.GetValue(source, null), null); } } var sourceFields = sourceType.GetFields(BindingFlags.Public | BindingFlags.Instance); var cloneFields = cloneType != sourceType?sourceType.GetFields(BindingFlags.Public | BindingFlags.Instance) : sourceFields; foreach (var sourceField in sourceFields) { var cloneField = cloneFields.SingleOrDefault(x => x.Name == sourceField.Name); if (cloneField != null) { cloneField.SetValue(clone, sourceField.GetValue(source)); } } var e = new CloningEventArgs(sourceType, source, cloneType, clone); if (Cloning != null) { Cloning(sender, e); } if (cloning != null) { cloning(sender, e); } return(clone); }