using DrawGraph; using System; using System.Drawing; using System.Reflection; using System.Windows.Forms; namespace DrawGraphManagement.MyUserControl { public class UCColor : UCBase { public UCColor(PackObjBase pob) { selectPoB = pob; } public override Panel GreatPropertyPanel(PropertyInfo info) { if (selectPoB == null) return null; System.Windows.Forms.Panel panel; System.Windows.Forms.Label label; System.Windows.Forms.Label labelColor; panel = new System.Windows.Forms.Panel(); label = new System.Windows.Forms.Label(); labelColor = new System.Windows.Forms.Label(); labelColor.AutoSize = true; labelColor.Dock = System.Windows.Forms.DockStyle.Left; labelColor.Name = "label" + selectPoB.PackTag; labelColor.Size = new System.Drawing.Size(41, 12); labelColor.TabIndex = 0; labelColor.Text = " "; labelColor.BackColor = (Color)info.GetValue(selectPoB, null); labelColor.Tag = info.Name; labelColor.Click += new EventHandler(labColor_Click); label.AutoSize = true; label.Dock = System.Windows.Forms.DockStyle.Left; label.Name = "label" + selectPoB.PackTag; label.Size = new System.Drawing.Size(41, 12); label.TabIndex = 0; label.Text = info.Name; object[] bookarr = info.GetCustomAttributes(typeof(ClassAttributs), false); if (bookarr.Length > 0) { ClassAttributs bookattribute1 = (ClassAttributs)bookarr[0];//获取属性类的第一个成员 if (bookattribute1.Description != null) { base.toolTip1.SetToolTip(label, bookattribute1.Description.ToString()); } } panel = new System.Windows.Forms.Panel(); panel.Dock = DockStyle.Top; panel.Controls.Add(labelColor); panel.Controls.Add(label); panel.Location = new System.Drawing.Point(3, 6); panel.Name = "panel" + selectPoB.PackTag; ; panel.Size = new System.Drawing.Size(200, 27); panel.TabIndex = 0; return panel; } void labColor_Click(object sender, EventArgs e) { if (selectPoB == null) return; System.Windows.Forms.Label lab = (sender as System.Windows.Forms.Label); try { if (colorDialog1.ShowDialog() == DialogResult.OK) { foreach (PropertyInfo p in selectPoB.GetType().GetProperties()) { if (lab.Tag.ToString() == p.Name) { lab.BackColor = colorDialog1.Color; p.SetValue(selectPoB, Convert.ChangeType(colorDialog1.Color, p.PropertyType), null); break; } } } } catch (Exception) { } finally { if (selectPoB != null) { selectPoB.Draw(); onChangeValue(selectPoB, e); } } } } }