using System;
|
using System.Collections.Generic;
|
using System.ComponentModel.Design;
|
using System.Drawing;
|
using System.Drawing.Design;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Windows.Forms;
|
using DPumpHydr.WinFrmUI.WenSkin.Controls;
|
|
namespace DPumpHydr.WinFrmUI.WenSkin.Design.Editor
|
{
|
public class WenCollectionEditor : CollectionEditor
|
{
|
public WenCollectionEditor(Type type) : base(type)
|
{
|
}
|
protected override CollectionForm CreateCollectionForm()
|
{
|
CollectionForm frm = base.CreateCollectionForm();
|
if (frm.GetType().GetField("propertyBrowser", BindingFlags.NonPublic | BindingFlags.Instance) is FieldInfo propertyGridFielInfo)
|
{
|
(propertyGridFielInfo.GetValue(frm) as System.Windows.Forms.PropertyGrid).HelpVisible = true;
|
}
|
|
if (frm.GetType().GetField("listbox", BindingFlags.NonPublic | BindingFlags.Instance) is FieldInfo listboxFielInfo)
|
{
|
if (listboxFielInfo.GetValue(frm) is ListBox listBox)
|
{
|
listBox.DrawMode = DrawMode.OwnerDrawFixed;
|
listBox.DrawItem += (s, e) =>
|
{
|
if (e.Index < 0)
|
return;
|
Graphics g = e.Graphics.SetGDIHigh();
|
Rectangle rec = e.Bounds;
|
|
int cut = (listBox.Items.Count.ToString().Length + 1) * 8;
|
Rectangle recStr = new Rectangle(cut, rec.Y + 1, rec.Width - cut, rec.Height - 2);
|
g.ResetClip();
|
g.FillRectangle(new SolidBrush(e.BackColor), recStr);
|
|
object value = listBox.Items[e.Index];
|
|
string text = value.GetType().GetProperty("Value").GetValue(value, null)?.ToString();
|
|
g.DrawString(text, e.Font, new SolidBrush(e.ForeColor), recStr);
|
};
|
}
|
}
|
frm.Width = 600;
|
frm.Height = 370;
|
return frm;
|
}
|
}
|
}
|