ポップアップから続けてポップアップを表示する
tt195361.hatenablog.comで表示したポップアップからさらにポップアップを表示すると、もともと表示していたポップアップが閉じてしまう。これを閉じないようにするには ToolStripDropDown.OwnerItem プロパティ を設定する。
次のプログラムでは、ポップアップ中のボタンのクリックイベントで、親のポップアップの ToolStripControlHost が子供 PopupPanel の OwnerItem プロパティに設定されるようにしている。
using System; using System.Windows.Forms; namespace CascadingPopup { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ShowPopup(null); } private void ShowPopup(ToolStripItem ownerItem) { var button = new Button(); button.Text = "ボタン"; var controlHost = new ToolStripControlHost(button); button.Click += (sender, e) => ShowPopup(controlHost); var popupPanel = new ToolStripDropDown(); popupPanel.OwnerItem = ownerItem; popupPanel.Items.Add(controlHost); popupPanel.Show(Cursor.Position); } } }