2022-08-23 21:12:59 +08:00

139 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}
}