using DrawGraph; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Windows.Forms; using System.Xml.Serialization; namespace DrawGraph { public class BoardUtil { public const string tagFlag = "_"; public static T Clone(T RealObject) { MemoryStream memoryStream = new MemoryStream(); T result; try { BinaryFormatter binaryFormatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); binaryFormatter.Serialize(memoryStream, RealObject); memoryStream.Position = 0L; result = (T)((object)binaryFormatter.Deserialize(memoryStream)); } catch (Exception ) { result = default(T); memoryStream.Close(); } finally { } return result; } public static PackObjBase PackObjFactory(string instanceName, ZedGraphControl parameter, PackObjManager parameter1) { PackObjBase result = null; try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); object[] args = new object[] { parameter, parameter1 }; result = (PackObjBase)executingAssembly.CreateInstance("DrawGraph." + instanceName, true, BindingFlags.Default, null, args, null, null); } catch (Exception ex) { string text = ex.Message.ToString(); } return result; } public static Control CreatFormControlFactory(string instanceName) { Control control = null; Control result; try { string assemblyQualifiedName = typeof(TextBox).AssemblyQualifiedName; string newAss = BoardUtil.GetNewAss(assemblyQualifiedName, instanceName); Type type; try { type = Type.GetType(newAss); bool flag = type == null; if (flag) { MessageBox.Show("请输入控件名,注意大小写,如:Label,Button"); result = control; return result; } } catch (Exception ex) { MessageBox.Show(ex.Message); result = control; return result; } control = (Control)Activator.CreateInstance(type); } catch { } result = control; return result; } private static string GetNewAss(string str, string sName) { int num = str.IndexOf(','); string text = str.Substring(0, num); string str2 = str.Substring(num); string str3 = text.Replace("TextBox", sName); return str3 + str2; } public static void ZedControlClear(ZedGraphControl zedGraphControl1) { bool flag = zedGraphControl1 != null; if (flag) { zedGraphControl1.GraphPane.Chart.Rect = new RectangleF(0f, 0f, 0f, 0f); zedGraphControl1.GraphPane.Title.Text = ""; } } public static bool SaveFile(T t, string filePath, ref string msg) { Stream stream = null; bool result = true; try { stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite); XmlSerializer xmlSerializer = new XmlSerializer(typeof(T), new Type[] { typeof(T), typeof(T) }); xmlSerializer.Serialize(stream, t); } catch (Exception ex) { msg = ex.InnerException.Message; result = false; } finally { bool flag = stream != null; if (flag) { stream.Close(); } } return result; } public static void MainToSub(TMain Main, TSub sub) where TSub : TMain { string name = ""; Type type = Main.GetType(); Type type2 = sub.GetType(); PropertyInfo[] properties = type.GetProperties(); PropertyInfo[] properties2 = type2.GetProperties(); for (int i = 0; i < properties.Length; i++) { name = properties[i].Name; bool canRead = properties[i].CanRead; if (canRead) { object value = properties[i].GetValue(Main, BindingFlags.GetProperty, null, null, null); PropertyInfo propertyInfo = properties2.Where((a, b) => a.Name == name).FirstOrDefault(); bool flag = propertyInfo != null && propertyInfo.CanWrite; if (flag) { propertyInfo.SetValue(sub, value, BindingFlags.SetProperty, null, null, null); } } } } public static Point GetCurrScrollVal(Panel zedControl) { return new Point { X = zedControl.HorizontalScroll.Value, Y = zedControl.VerticalScroll.Value }; } } }