|
分類:[.NET 全般]
VSTOでRibbonButtonをプログラム内から、クリックするために、
WinFormのButtonにあるPerformClickメソッドを実現したいと思っています。
拡張メソッドを使って、出来そうだなと思ったのですが、Clickイベントを取ってきてからDelegateに変換することができません。
何か良い方法はないでしょうか?
public static void PerformClick(this RibbonButton rbn)
{
var myType = rbn.GetType();
var ev = myType.GetEvent("Click");
// ↓がうまくとってこれない。何か方法はあるのだろうか。。
var fi = rbn.GetType().GetField(ev.Name, BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy);
var del = (Delegate)fi.GetValue(rbn);
var list = del.GetInvocationList();
foreach(var d in list)
{
d.DynamicInvoke(rbn, null);
}
}
|