我有一个属性网格,它会引用一些属性。我想让属性网格中的一个项目成为一个按钮,或者甚至有一个椭圆形按钮,它就像一个普通胜利形式的按钮。
有办法做到这一点吗?
提前感谢您的帮助!
答案 0 :(得分:7)
我建议阅读Getting the Most Out of the .NET Framework PropertyGrid Control。
介绍如何为您的财产create a custom UI,其中可能包含一个打开弹出/单独表单/等的按钮。
答案 1 :(得分:1)
UITypeEditor,使用IWindowsFormsEditorService ......就是这样。得到它了!谢谢你的指导!
答案 2 :(得分:1)
我添加了全部折叠,并使用扩展方法将所有按钮展开到PropertyGrid。
namespace MyNameSpace
{
public static class PropertyGridHelper
{
private static PropertyGrid getPropertyGridParent(object sender)
{
PropertyGrid propertyGrid = null;
ToolStripButton toolStripButton = sender as ToolStripButton;
// ToolStripButton -> ToolStrip -> PropertyGrid
if (toolStripButton != null)
{
ToolStrip toolStrip = toolStripButton.GetCurrentParent() as ToolStrip;
if (toolStrip != null)
{
propertyGrid = toolStrip.Parent as PropertyGrid;
if (propertyGrid != null)
{
propertyGrid.CollapseAllGridItems();
}
}
}
return propertyGrid;
}
private static void propertyGridCollapseAllClick(object sender, EventArgs e)
{
PropertyGrid propertyGrid = getPropertyGridParent(sender);
if (propertyGrid != null)
{
propertyGrid.CollapseAllGridItems();
}
}
private static void propertyGridExpandAllClick(object sender, EventArgs e)
{
PropertyGrid propertyGrid = getPropertyGridParent(sender);
if (propertyGrid != null)
{
propertyGrid.ExpandAllGridItems();
}
}
public static void AddCollapseExpandAllButtons(this System.Windows.Forms.PropertyGrid propertyGrid)
{
foreach (Control control in propertyGrid.Controls)
{
ToolStrip toolStrip = control as ToolStrip;
if (toolStrip != null)
{
toolStrip.Items.Add(new ToolStripButton("", Properties.Resources.CollapseAll, propertyGridCollapseAllClick));
toolStrip.Items.Add(new ToolStripButton("", Properties.Resources.ExpandAll, propertyGridExpandAllClick));
}
}
}
}
}