ContextMenu
を使用してボタンを有効/無効にする方法を探しています。しかし、私の問題は、MenuItem
を有効にしてボタンを無効にすると、ContextMenu
が表示されなくなります。ボタンなどの無効なコントロールのContextMenu
無効なコントロールでContextMenu
やその他の動作を維持する方法はありますか?
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Enable", new EventHandler(enableButton));
this.button1.ContextMenu = cm;
private void enableButton(object sender, EventArgs e)
{
MenuItem menuItem = sender as MenuItem;
if (menuItem != null)
{
ContextMenu menu = menuItem.GetContextMenu();
Control sourceControl = menu.SourceControl;
sourceControl.Enabled = !sourceControl.Enabled;
}
}
機能を無効にしたり、ボタンをグレー表示にしたり、これらのイベントをインターセプトすると、ボタンは無効になっているように見えますが、ContextMenuイベントを受信できるようになります。この動作は "By-Design"です –
可能だったとしても、無効化コントロールを右クリックしようとする人はいないので、悪い設計になります。それが多少意味をなさないかもしれない唯一のケースはUIデザイナーでしょう。 – Phil1970