Ich fand dieses previous issue - jemand das Gleiche mit XtraBars.PopupMenu zu tun versucht und hatte eine Unterklasse von BarManager und überschreibt das BarSelectionInfo.ClosePopup Ereignis erstellen (vielleicht können Sie es zu Ihrem Szenario anzupassen). Das Beispielprojekt ist dem Problem beigefügt und zeigt die Auswahl eines Datums im Popup-Menü und im geöffneten Menü an.
EDIT:
Hier ist der entsprechende Code auf Vollständigkeit - immer dann, wenn das Popup über ist, ClosePopup Brände, wie pro docs schließen für BarManager:
Wenn Sie einen BarManager auf einem Formular platzieren zur Entwurfszeit, alle Steuerelemente veröffentlichen die PopupContextMenu Extender-Eigenschaft (die Beschriftung im Eigenschaftenfenster sieht aus wie 'PopupContextMenu auf barManager1')
Sie können das Kontextmenü mithilfe dieser Eigenschaft zuweisen und die Überschreibung implementieren.
Im Beispiel kehren Sie von der Methode basierend auf einer Bedingung zurück (Abbruch des Ereignisses) - in diesem Fall wird das Tag der Leiste bei einem Ereignis im Formular auf False gesetzt und in der Überschreibung geprüft.
private void barEditItem1_EditValueChanged(object sender, EventArgs e) {
popupMenu1.Manager.Bars[0].Tag = false;
}
using DevExpress.XtraBars;
using DevExpress.XtraBars.ViewInfo;
public class MyBarManager : BarManager {
protected override BarSelectionInfo CreateSelectionInfo() {
return new MyBarSelectionInfo(this);
}
}
public class MyBarSelectionInfo : BarSelectionInfo {
public MyBarSelectionInfo(BarManager manager)
: base(manager) {
}
public override void ClosePopup(IPopup popup) {
if (!(bool)Manager.Bars[0].Tag) {
Manager.Bars[0].Tag = true;
return;
}
base.ClosePopup(popup);
}
}
Ich habe die Dokumentation überprüft, Sie haben Recht - kein Ereignis existiert für das, wonach Sie suchen. +1 für eine gute Frage. Habe ich Recht, wenn ich sage, dass Sie kurz gesagt verhindern wollen, dass der Benutzer das Kontextmenü schließt, bis Ihr Code es zulässt? –
Hallo DeeMac, ja, ich möchte das gleiche. aber jetzt nicht in der Lage. Ich habe auch versucht, alle virtuellen Mitglieder zu überprüfen, aber keinen Erfolg. –