void AddNumberBox(FieldBind field) { string name = field.GetEditorName(); LabeledTextbox c = new LabeledTextbox(name); c.Name = name + "_TB"; c.Text = field.GetValue().ToString(); field.GetDataAction = () => { if (int.TryParse(c.Text, out int r)) { return(r); } else { return(0); } }; field.Reverted += (object o) => { c.Text = o.ToString(); }; //c.TextChanged += (object sender, EventArgs e) => //{ // field.data = c.Text; //}; this.flowPanel.Controls.Add(c); }
void AddEnumComboBox(FieldBind field) { string name = field.GetEditorName(); ComboBox c = new ComboBox(); c.Name = name + "_TB"; var names = Enum.GetNames(field.field.FieldType); if (names.Length > 0) { c.Items.AddRange(names); c.Text = Enum.GetName(field.field.FieldType, field.GetValue()); field.GetDataAction = () => { return(Enum.Parse(field.field.FieldType, c.Text)); }; } else { field.GetDataAction = () => { return(Activator.CreateInstance(field.field.FieldType)); }; } field.Reverted += (object o) => { c.Text = Enum.GetName(field.field.FieldType, o); }; //c.TextChanged += (object sender, EventArgs e) => //{ // field.data = c.Text; //}; this.flowPanel.Controls.Add(c); }
void AddTextBox(FieldBind field) { string name = field.GetEditorName(); LabeledTextbox c = new LabeledTextbox(name); c.Name = name + "_TB"; c.Text = (string)field.GetValue(); field.GetDataAction = () => { return(c.Text); }; field.Reverted += (object o) => { c.Text = (string)o; }; //c.TextChanged += (object sender, EventArgs e) => //{ // field.data = c.Text; //}; this.flowPanel.Controls.Add(c); }
void AddCheckbox(FieldBind field) { string name = field.GetEditorName(); CheckBox c = new CheckBox(); c.Name = name + "_CB"; c.Text = name; c.Checked = (bool)field.GetValue(); field.GetDataAction = () => { return(c.Checked); }; field.Reverted += (object o) => { c.Checked = (bool)o; }; //c.CheckedChanged += (object sender, EventArgs e) => //{ // field.data = c.Checked; //}; this.flowPanel.Controls.Add(c); }
public void Setup(object loadedObj, string name) { this.loadedObject = loadedObj; this.objectType = loadedObj.GetType(); this.labelName.Text = name == null ? objectType.Name : name; var fields = objectType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public) .Where(x => x.GetCustomAttribute <EditorFieldAttribute>() != null).ToArray(); this.fieldBinds = new FieldBind[fields.Length]; for (int j = 0; j < fields.Length; j++) { //var curVal = fields[j].GetValue(loadedObj); var pb = new FieldBind(fields[j], loadedObj); //TODO: Handle dynamically or with classes if (fields[j].FieldType == typeof(bool)) { AddCheckbox(pb); } else if (fields[j].FieldType == typeof(string)) { AddTextBox(pb); } else if (fields[j].FieldType == typeof(int)) { AddNumberBox(pb); } else if (fields[j].FieldType.IsSubclassOf(typeof(Enum))) { AddEnumComboBox(pb); } else { Console.WriteLine("Unknown type"); } this.fieldBinds[j] = pb; } }