2023-03-01 00:21:03 +08:00

117 lines
4.0 KiB
C#

using DrawGraph;
using System;
using System.Reflection;
using System.Windows.Forms;
namespace DrawGraphManagement.MyUserControl
{
public class UCSelect : UCBase
{
//PackObjBase selectPoB = null;
public UCSelect(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.ComboBox comboBox1;
panel = new System.Windows.Forms.Panel();
label = new System.Windows.Forms.Label();
comboBox1 = new System.Windows.Forms.ComboBox();
// comboBox1
//
comboBox1.FormattingEnabled = true;
comboBox1.Location = new System.Drawing.Point(435, 4);
comboBox1.Dock = DockStyle.Left;
comboBox1.Name = "comboBox" + selectPoB.PackTag;
comboBox1.Size = new System.Drawing.Size(121, 20);
comboBox1.Tag = info.Name;
comboBox1.Items.Clear();
foreach (string v in datasource)
{
comboBox1.Items.Add(v);
}
Enum ltype = (Enum)info.GetValue(selectPoB, null);
comboBox1.Text = ltype.ToString();
comboBox1.TabIndex = 4;
comboBox1.SelectedValueChanged += new EventHandler(ComboBox1_SelectedValueChanged);
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;
string cName = info.Name;
object[] bookarr = info.GetCustomAttributes(typeof(ClassAttributs), false);
if (bookarr.Length > 0)
{
ClassAttributs bookattribute1 = (ClassAttributs)bookarr[0];
if (bookattribute1.CName != null)
{
cName = bookattribute1.CName;
}
if (bookattribute1.Description != null)
{
base.toolTip1.SetToolTip(label, bookattribute1.Description.ToString());
}
}
label.Text = cName;
panel = new System.Windows.Forms.Panel();
panel.Dock = DockStyle.Top;
panel.Controls.Add(comboBox1);
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 ComboBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (selectPoB == null) return;
System.Windows.Forms.ComboBox cbb = (sender as System.Windows.Forms.ComboBox);
try
{
foreach (PropertyInfo p in selectPoB.GetType().GetProperties())
{
if (cbb.Tag.ToString() == p.Name)
{
MovePackObjCommand cmd = new MovePackObjCommand(CommandManage.GetInstance.AreaManage, selectPoB);
cmd.PreExecute();
object value = Enum.Parse(p.PropertyType, cbb.Text.ToString(), false);
p.SetValue(selectPoB, Convert.ChangeType(value, p.PropertyType), null);
cmd.LastExecute();
CommandManage.GetInstance.AddCommand(cmd);
break;
}
}
}
catch (Exception )
{
}
finally
{
if (selectPoB != null)
{
selectPoB.Draw();
onChangeValue(selectPoB, e);
}
}
}
}
}