リボンのロード時に ActiveInspector にアクセスすることは可能ですか。Application.ActiveInspector() は、カスタム フォームを使用すると適切な値を返しますが、デフォルトの連絡先フォームでは返されません。
ActiveInspector().CurrentItem のプロパティ値に応じてリボン ボタンをカスタマイズするには、ActiveInspector が必要です。
リボンのロード時に ActiveInspector にアクセスすることは可能ですか。Application.ActiveInspector() は、カスタム フォームを使用すると適切な値を返しますが、デフォルトの連絡先フォームでは返されません。
ActiveInspector().CurrentItem のプロパティ値に応じてリボン ボタンをカスタマイズするには、ActiveInspector が必要です。
開いているインスペクターのリストを維持するという点で、上記を少し変更します (インスペクターをラップしてリストに保持します)。それらを新しいインスペクターイベントに追加し、ワイヤーアップクローズイベントクローズでそれらを削除します。
私のリボン コードには、リボンの control.context を使用してインスペクターを見つける静的メソッド FindOutlookInspector があります。
これらの線に沿った何か..
OutlookInspector は私のラップされたインスペクター クラスですが、それは必要ないかもしれません。また、私はメール アイテムだけを気にします
void _inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) {
OutlookItem olItem = null;
try {
object newitem = Inspector.CurrentItem;
olItem = new OutlookItem(newitem);
if (olItem.Class == Outlook.OlObjectClass.olMail && olItem.MessageClass == "IPM.Note") {
OutlookInspector existingWindow = FindOutlookInspector(Inspector);
if (existingWindow == null) {
OutlookInspector window = new OutlookInspector(Inspector);
window.Close += new EventHandler(WrappedWindow_Close);
_windows.Add(window);
}
} catch (Exception ex) {
throw ex;
}
}
void WrappedWindow_Close(object sender, EventArgs e) {
OutlookInspector window = (OutlookInspector) sender;
window.Close -= WrappedWindow_Close;
_windows.Remove(window);
}
internal static OutlookInspector FindOutlookInspector(object window) {
foreach(OutlookInspector inspector in _windows) {
if (inspector.Window == window) {
return inspector;
}
}
return null;
}
次に、リボン コードでFindOutlookInspector
、ラップされたインスペクターを取得するために呼び出すことができます
OutlookInspector window = ThisAddIn.FindOutlookInspector(control.Context);
Inspectors コレクションの NewInspector イベントを処理し、リボンのロード イベントからアクセスできる静的フィールド (おそらく WeakReference を使用する必要があります) でそれを保持できますか?
Outlook でリボンのカスタマイズを行ったことはありませんが、古い Tablet PC 製品である TEO のインスペクタを使用して広範な作業を行いました。それらを扱うのは面倒ですが、Outlook をシャットダウンしたり、保留中の編集をキャンセルしたりすると、あらゆる種類の奇妙な問題が発生するため、Inspector の参照に長時間固執することは望ましくありません。