139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using DrawGraph;
 | ||
| using System;
 | ||
| using System.Reflection;
 | ||
| using System.Windows.Forms;
 | ||
| 
 | ||
| namespace DrawGraphManagement.MyUserControl
 | ||
| {
 | ||
|     public class UCAttrib : UCBase
 | ||
|     {
 | ||
|         PackObjBase selectPoB = null;
 | ||
| 
 | ||
|         public UCAttrib(PackObjBase pob)
 | ||
|         {
 | ||
|             selectPoB = pob;
 | ||
|         }
 | ||
| 
 | ||
|         public override Panel GreatPropertyPanel(PropertyInfo info)
 | ||
|         {
 | ||
|             if (selectPoB == null) return null;
 | ||
| 
 | ||
|             System.Windows.Forms.Panel panel;
 | ||
|             System.Windows.Forms.TextBox textBox;
 | ||
|             System.Windows.Forms.Label label;
 | ||
|             label = new System.Windows.Forms.Label();
 | ||
|             textBox = new System.Windows.Forms.TextBox();
 | ||
| 
 | ||
|             object[] bookarr = info.GetCustomAttributes(typeof(ClassAttributs), false);
 | ||
|             textBox.Leave -= new EventHandler(txt_Leave);
 | ||
|             // 
 | ||
|             // label1
 | ||
|             // 
 | ||
|             label.AutoSize = true;
 | ||
|             label.Dock = System.Windows.Forms.DockStyle.Left;
 | ||
|             label.Location = new System.Drawing.Point(0, 0);
 | ||
| 
 | ||
|             string cName = info.Name;
 | ||
|             if (bookarr.Length > 0) {
 | ||
|                 ClassAttributs bookattribute1 = (ClassAttributs)bookarr[0];
 | ||
|                 if (bookattribute1.CName != null)
 | ||
|                 {
 | ||
|                     cName = bookattribute1.CName;
 | ||
|                 }
 | ||
|                 if (bookattribute1.Description != null)
 | ||
|                 {
 | ||
|                     toolTip1.SetToolTip(label, bookattribute1.Description.ToString());
 | ||
|                 }
 | ||
|             }
 | ||
|             label.Name = "label" + selectPoB.PackTag;
 | ||
|             label.Size = new System.Drawing.Size(41, 12);
 | ||
|             label.TabIndex = 0;
 | ||
|             label.Text = cName;
 | ||
| 
 | ||
|             // 
 | ||
|             // textBox1
 | ||
|             // 
 | ||
|             textBox.Dock = System.Windows.Forms.DockStyle.Left;
 | ||
|             textBox.Location = new System.Drawing.Point(41, 0);
 | ||
|             textBox.Name = "textBox" + info.Name;
 | ||
|             textBox.Size = new System.Drawing.Size(156, 21);
 | ||
|             textBox.Tag = info.Name;
 | ||
|             textBox.MaxLength = 32767;
 | ||
|             textBox.TabIndex = 1;
 | ||
|             textBox.Text = info.GetValue(selectPoB, null).ToString();
 | ||
|             textBox.Leave += new EventHandler(txt_Leave);
 | ||
|             if (bookarr.Length > 0)
 | ||
|             {
 | ||
|                 ClassAttributs bookattribute1 = (ClassAttributs)bookarr[0];//获取属性类的第一个成员
 | ||
|                 if (bookattribute1.Message == "readOnly")
 | ||
|                 {
 | ||
|                     textBox.ReadOnly = true;
 | ||
|                 }
 | ||
|             }
 | ||
|             // 
 | ||
|             // panel5
 | ||
|             // 
 | ||
|             panel = new System.Windows.Forms.Panel();
 | ||
|             panel.Dock = DockStyle.Top;
 | ||
|             panel.Controls.Add(textBox);
 | ||
|             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;
 | ||
|         }
 | ||
| 
 | ||
|         public void Clear()
 | ||
|         {
 | ||
|             selectPoB = null;
 | ||
|         }
 | ||
| 
 | ||
|         void txt_Leave(object sender, EventArgs e)
 | ||
|         {
 | ||
|             if (selectPoB == null) return;
 | ||
|             //先清除,因为Tag修改后会有重复
 | ||
|             selectPoB.Clear();
 | ||
|             TextBox txtser = (sender as TextBox);
 | ||
|             try
 | ||
|             {
 | ||
|                 foreach (PropertyInfo p in selectPoB.GetType().GetProperties())
 | ||
|                 {
 | ||
|                     if (txtser.Tag.ToString() == p.Name)
 | ||
|                     {
 | ||
|                         MovePackObjCommand cmd = new MovePackObjCommand(CommandManage.GetInstance.AreaManage, selectPoB);
 | ||
|                         cmd.PreExecute();
 | ||
|                         //先拿到改变前的值
 | ||
|                         float width = selectPoB.Width;
 | ||
|                         float height = selectPoB.Height;
 | ||
|                         p.SetValue(selectPoB, Convert.ChangeType(txtser.Text.TrimEnd(), p.PropertyType), null);
 | ||
|                         if (p.Name.ToLower() == "x")
 | ||
|                         {
 | ||
|                             selectPoB.EndX = selectPoB.X + width;
 | ||
|                         }
 | ||
|                         if (p.Name.ToLower() == "y")
 | ||
|                         {
 | ||
|                             selectPoB.EndY = selectPoB.Y + height;
 | ||
|                         }
 | ||
|                         cmd.LastExecute();
 | ||
|                         CommandManage.GetInstance.AddCommand(cmd);
 | ||
|                         break;
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|             catch (Exception  )
 | ||
|             {
 | ||
|             }
 | ||
|             finally
 | ||
|             {
 | ||
|                 if (selectPoB != null)
 | ||
|                 {
 | ||
|                     selectPoB.Draw();
 | ||
|                     onChangeValue(selectPoB, e);
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| }
 |