I have the following setup:
1- A ToolStripDropDownButton with a ToolStripDropDown that contains a CustomUserControl that contains a ListView.
2- The ListView has a ContextMenuStrip associated to it.
As a solution for this question, my code works like so:
(psuedocode)
if ListView RightClicked
ToolStripDropDown.AutoClose = false;
ShowContextMenuStrip
In ContextMenuStripClosing
ToolStripDropDown.AutoClose = true;
if ListView not Focused || CloseReason == ItemClicked
ToolStripDropDown.Close();
The ToolStripDropDown
gets dismissed in every manner that it would if I had never monkeyed with the AutoClose
property except for one. If I right-click on the ListView
, the ContextMenuStrip
gets displayed correctly. Then, if I click in the ListView
, the ContextMenuStrip
is dismissed correctly, and the ToolStripDropDown
stays visible as I desire. However, if I click into the application, the ToolStripDropDown
does not AutoClose
as it should. If I click into the application without displaying the ContextMenuStrip
, the ToolStripDropDown
auto closes correctly.
Any ideas on what I might be missing here?
For Hans:
protected void ListViewClicked(Object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
_tempToolStripDropDown.AutoClose = false;
}
}
protected void ContextStripClosing(Object sender, ToolStripDropDownClosingEventArgs e)
{
_tempToolStripDropDown.AutoClose = true;
if(!_tempListView.Focused || e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
{
_tempToolStripDropDown.Close();
}
}