private static bool _queryStatusCalled = false;
private void MenuItem_BeforeQueryStatus(object sender, EventArgs e)
{
try
{
if (_queryStatusCalled)
{
_queryStatusCalled = false;
return;
}
else
{
var command = sender as OleMenuCommand;
MenuItemStatus MenuItemStatus = menuItemStore.AddRMenuItemsStatus(command.Text);
if (MenuItemStatus.Name == command.Text)
command.Enabled = MenuItemStatus.Enabled;
_queryStatusCalled = true;
}
}
catch (Exception ex)
{
}
}
public struct MenuItemStatus
{
public string Name;
public bool Visible;
public bool Enabled;
public bool Checked;
}
public class MenuItemStore
{
MenuItemStatus MenuItemStatus = new MenuItemStatus();
public MenuItemStatus AddRMenuItemsStatus(string MenuName)
{
ThreadHelper.ThrowIfNotOnUIThread();
try
{
MenuItemStatus.Name = MenuName;
MenuItemStatus.Enabled =true
MenuItemStatus.Visible =true;
MenuItemStatus.Checked =true
catch (ArgumentOutOfRangeException ex)
{
}
return MenuItemStatus;
}
}