奇妙なものを手に入れました。
ContextMenuStripを含むクラスがあり、その上で.Showを呼び出しても、何も起こりません。以下に示すようにログファイルに書き込もうとしましたが、最初の行がヒットしましたが、表示しようとした行にヒットするとすぐに、プログラムはreturnに遭遇したように動作するように見えます。
クラスは次のとおりです。
class AnywhereMenu
{
frmMain parent;
KeyboardHook hook = new KeyboardHook();
ContextMenuStrip anymenu = new ContextMenuStrip();
public AnywhereMenu(frmMain _parent)
{
parent = _parent;
populateContextMenu();
}
void populateContextMenu()
{
ToolStripMenuItem mnuTasks = new ToolStripMenuItem();
ToolStripMenuItem mnuComments = new ToolStripMenuItem();
ToolStripMenuItem mnuTools = new ToolStripMenuItem();
mnuTasks.Text = "&Tasks";
mnuTasks.DropDownItems.Add("Item1", null, new EventHandler(TaskHandler));
mnuTasks.DropDownItems.Add("Item2", null, new EventHandler(TaskHandler));
mnuComments.Text = "&Comments";
mnuComments.DropDownItems.Add("Item1", null, new EventHandler(CommentHandler));
mnuComments.DropDownItems.Add("Item2", null, new EventHandler(CommentHandler));
mnuComments.DropDownItems.Add("Item3", null, new EventHandler(CommentHandler));
mnuTools.Text = "Links//Tools";
mnuTools.DropDownItems.Add("Item1", null, new EventHandler(ToolHandler));
mnuTools.DropDownItems.Add("Item2", null, new EventHandler(ToolHandler));
mnuTools.DropDownItems.Add("Item3", null, new EventHandler(ToolHandler));
anymenu.Items.Add(mnuTasks);
anymenu.Items.Add(mnuComments);
anymenu.Items.Add(mnuTools);
}
public void MenuShow()
{
Settings.Save.debugLog("Displaying context menu!");
anymenu.Show(Cursor.Position);
return;
}
}
そしてそれを呼んでいるコード:
if (keyChar == "Space")
{
Settings.Save.debugLog("Entered Context Menu Block");
anyMenu.MenuShow();
Settings.Save.debugLog("Exiting Context Menu Block");
}
これで、デバッグログに次の行が表示されます:Entered Context Menu Blockですが、「Displayingcontextmenu!」も表示されません。または「コンテキストメニューブロックの終了」がヒットします。何か案は?ありがとう :-)
編集-私はそれを開発したマシンで正常に動作することを追加するのを忘れましたが、他のコンピュータは上記の動作を示します。ここで何が起こっているのかわからない:-(