0

TileContainer に CheckButton があります。CheckButtonのChecked Eventにポップアップメニューを表示させました。ここで、イベントの最後に CheckButton のチェックを外す必要があります。

this.tileContainer1.Buttons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] {
        new DevExpress.XtraBars.Docking2010.WindowsUIButton("ShowList", global::DMS.Properties.Resources.speech_bubble, -1, DevExpress.XtraBars.Docking2010.ButtonStyle.CheckButton, 0)});
4

1 に答える 1

1

私があなたのシナリオを正しく理解している場合は、次のアプローチを使用できます。

WindowsUIButton checkButton = new WindowsUIButton()
{
    Caption = "Check Button",
    Style = ButtonStyle.CheckButton
};
checkButton.CheckedChanged += checkButton_CheckedChanged;
tileContainer1.Buttons.Add(checkButton);
//...
int reentranceCount = 0;
void checkButton_CheckedChanged(object sender, EventArgs e) {
    if(reentranceCount > 0) return;
    /*do some stuff */
    Uncheck((WindowsUIButton)sender);
}
void Uncheck(WindowsUIButton button) {
    reentranceCount++;
    try {
        button.Checked = false;
    }
    finally { reentranceCount--; }
}

更新:TileContiner.ButtonChecked
イベント を使用している場合は、上記のコードを次のように更新する必要があります。

//...
tileContainer1.ButtonChecked += tileContainer_ButtonChecked;
//...
void tileContainer_ButtonChecked(object sender, ButtonEventArgs e) {
    if(reentranceCount > 0) return;
    /*do some stuff */
    Uncheck((WindowsUIButton)e.Button);
}
于 2013-02-11T11:07:03.283 に答える