反射调用 pictureedit 菜单功能

1.获取pictureedit的菜单

private DevExpress.XtraEditors.Controls.PictureMenu GetMenu(DevExpress.XtraEditors.PictureEdit edit)
{
PropertyInfo pi = typeof(DevExpress.XtraEditors.PictureEdit).GetProperty("Menu", BindingFlags.NonPublic | BindingFlags.Instance);
if (pi != null)
return pi.GetValue(edit, null) as DevExpress.XtraEditors.Controls.PictureMenu;
return null;
}

2. 调用菜单中的方法

private void InvokeMenuMethod(DevExpress.XtraEditors.Controls.PictureMenu menu, string name)
{
MethodInfo mi = typeof(DevExpress.XtraEditors.Controls.PictureMenu).GetMethod(name, BindingFlags.NonPublic | BindingFlags.Instance);
if (mi != null && menu != null)
mi.Invoke(menu, new object[] { menu, new EventArgs() });
}

3.调用清除图片方法示例

//the name can be on of the following values:OnClickedLoad;OnClickedSave;OnClickedCut;OnClickedCopy;OnClickedPaste;OnClickedDelete

private void btnClear_Click(object sender, EventArgs e)
{
InvokeMenuMethod(GetMenu(ArCont), "OnClickedDelete");
}

你可能感兴趣的:(反射)