Exemple #1
0
        public static MemberInfoControl GetPropertyController(PropertyInfo info)
        {
            if (info == null)
            {
                return(null);
            }
            if (!info.CanRead)
            {
                return(null);
            }
            MemberInfoControl mic = GetPropertyController(info.Name, info.PropertyType);

            if (mic == null)
            {
                return(null);
            }
            mic.info          = info;
            mic.ValueChanged += new Action <object>(o =>
            {
                info.SetValue(mic.Target, o, null);
            });
            Control outer = mic.Control;

            outer.Name     = string.Format("lbl_{0}_{1}", info.DeclaringType.Name, info.Name);
            outer.Text     = info.Name;
            mic.IsReadOnly = !info.CanWrite;
            //if (!TryMakeControl(info, outer)) return null;
            return(mic);
        }
Exemple #2
0
        private void AddMember(MemberInfo info)
        {
            if (info.Name.StartsWith("_") || info.Name.StartsWith("<"))
            {
                return;
            }
            MemberInfoControl lblPrimType = MemberInfoControl.GetPropertyController(info);

            if (lblPrimType != null)
            {
                this.grpPrimInfo.Controls.Add(lblPrimType.Control);
            }
        }
Exemple #3
0
        public static MemberInfoControl GetPropertyController(string name, Type ftype)
        {
            if (IsBitFlags(ftype))
            {
                var             fs    = ftype.GetFields(BindingFlags.Static);
                int             total = fs.Length;
                int             len   = total / 4;
                Size            size  = new System.Drawing.Size(15 * total + 60, len * 39 + 39);
                FlowLayoutPanel flow  = new FlowLayoutPanel();
                flow.FlowDirection = FlowDirection.LeftToRight;
                flow.AutoSize      = false;
                flow.Size          = size;
                flow.Dock          = DockStyle.Bottom;
                flow.MinimumSize   = size;

                foreach (var o in fs)
                {
                    CheckBox inner = new CheckBox();
                    inner.Size   = new System.Drawing.Size(54, 21);
                    inner.Text   = o.Name;
                    inner.Name   = string.Format("value_{0}_{1}", name, o.Name);
                    inner.KeyUp += (delegate(object sender, KeyEventArgs e)
                    {
                    });
                    flow.Controls.Add(inner);
                }
                Control outer = new GroupBox();
                outer.Size        = size;
                outer.MinimumSize = size + new Size(5, 5);
                outer.Controls.Add(flow);
                outer.AutoSize = false;
                MemberInfoControl mic = new MemberInfoControl(outer);
                return(mic);
            }
            if (ftype.IsEnum)
            {
                ComboBox inner = new ComboBox();
                inner.FormattingEnabled = true;
                inner.Dock = DockStyle.Bottom;
                inner.Name = "value_" + name;
                foreach (FieldInfo o in ftype.GetFields())
                {
                    if (o.IsStatic)
                    {
                        inner.Items.Add(o.Name);
                    }
                }
                inner.SelectedIndex         = 0;
                inner.SelectedIndexChanged += new System.EventHandler(delegate(object sender, EventArgs e)
                {
                });
                Control outer = new GroupBox();
                outer.Size = new System.Drawing.Size(149, 39);
                outer.Controls.Add(inner);
                MemberInfoControl mic = new MemberInfoControl(outer);
                return(mic);
            }

            if (ftype == typeof(String))
            {
                TextBox inner = new TextBox();
                inner.Dock   = DockStyle.Bottom;
                inner.Name   = "value_" + name;
                inner.KeyUp += (delegate(object sender, KeyEventArgs e)
                {
                });
                Control outer = new GroupBox();
                outer.Size = new System.Drawing.Size(149, 39);
                outer.Controls.Add(inner);
                MemberInfoControl mic = new MemberInfoControl(outer);
                return(mic);
            }

            if (typeof(bool).IsAssignableFrom(ftype))
            {
                CheckBox inner = new CheckBox();
                inner.Dock = DockStyle.Bottom;
                inner.Name = "value_" + name;
                inner.Text = name;
                inner.Size = new System.Drawing.Size(90, 39);
                GetResult <object> act = new GetResult <object>();
                inner.KeyUp += (delegate(object sender, KeyEventArgs e)
                {
                    if (e.KeyCode == Keys.Enter)
                    {
                        // mic.OnValueChanged(act);
                    }
                });
                MemberInfoControl mic = new MemberInfoControl(inner);
                return(mic);
            }

            if (IsNumber(ftype))
            {
                TextBox inner = new TextBox();
                inner.Dock = DockStyle.Bottom;
                inner.Name = "value_" + name;
                inner.Size = new System.Drawing.Size(50, 21);
                GetResult <object> act = new GetResult <object>();
                inner.KeyUp += (delegate(object sender, KeyEventArgs e)
                {
                    if (e.KeyCode == Keys.Enter)
                    {
                        // mic.OnValueChanged(act);
                    }
                });
                Control outer = new GroupBox();
                outer.Size = new System.Drawing.Size(90, 39);
                outer.Controls.Add(inner);
                MemberInfoControl mic = new MemberInfoControl(outer);
                return(mic);
            }

            if (IsNumberList(ftype, 5))
            {
                FlowLayoutPanel flow = new FlowLayoutPanel();
                flow.Dock = DockStyle.Bottom;
                var fs = ftype.GetFields(BindingFlags.Instance | BindingFlags.Public);
                flow.FlowDirection = FlowDirection.LeftToRight;
                Size size = new System.Drawing.Size(60 * fs.Length, 39);
                flow.MinimumSize = size;
                Label label = new Label();
                label.Text = ftype.Name;
                foreach (var o in fs)
                {
                    string oName = o.Name;
                    //labelText += oName.Length > 1 ? oName.Substring(oName.Length - 1) : oName;
                }
                label.Size = new System.Drawing.Size(20, 13);
                label.Name = string.Format("lbl_{0}", name);
                TextBox inner = new TextBox();
                inner.Size   = new System.Drawing.Size(60, 21);
                inner.Name   = string.Format("value_{0}", name);
                inner.KeyUp += (delegate(object sender, KeyEventArgs e)
                {
                });
                flow.Controls.Add(label);
                flow.Controls.Add(inner);
                Control outer = new GroupBox();
                outer.MinimumSize = size + new Size(5, 10);
                outer.Size        = size + new Size(5, 10);
                flow.Size         = size;
                outer.Controls.Add(flow);
                MemberInfoControl mic = new MemberInfoControl(outer);
                return(mic);
            }
            return(null);
        }