2017-10-08 32 views
0

私は、パネルのコンストラクタを介してパネルのコンテキストメニューに設定されています。ContextMenuStripが右クリックされて初めて表示されない

最初に右クリックしても機能しないので、初めて初めての操作になります。

私がいるContextMenuStripのコンストラクタと、このようなロード、フォームのコンストラクターとして、さらにはフラグとタイマーの他の場所でのパネルのコンテキストメニューに、それの割り当てを配置することも試みたが、すべてが同じように作らその結果...

EDIT:(()それは、重要なポイントにカットとして要求されるようにいくつかのコード)

class FiniteAutomationController : System.Windows.Forms.Panel 
{ 
    public FiniteAutomationController() 
     : base() 
    { 
    this.ContextMenuStrip = (cms = new ContextMenuStrip()); 
    } 
    public ContextMenuStrip cms; 
} 

EDIT:(blaze_125の要求、いくつかのより多くのコード毎)

//at form designer initializecomponents after Controller(FiniteAutomationController)'s initialization 

this.Controller.cms.Opening += new System.ComponentModel.CancelEventHandler(this.cms_Load); 

//at form code class 
    static State contextS = null; 
    static Action contextA = null; 
    private void cms_Load(object sender, CancelEventArgs e) 
    { 
     Controller.cms.Items.Clear(); 

     if ((contextS = FiniteAutomationData.GetStateFrom(mouseX, mouseY)) != null) // Rclick States 
     { 
      Controller.cms.Items.Add("Delete"); Controller.cms.Items[0].Click += new EventHandler(cms_DeleteState); 
      Controller.cms.Items.Add("Rename"); Controller.cms.Items[1].Click += new EventHandler(cms_RenameState); 
      Controller.cms.Items.Add((contextS.final ? '\u2714' : ' ') + " Final"); Controller.cms.Items[2].Click += new EventHandler(cms_Final); 
      Controller.cms.Items.Add((contextS.initial ? '\u2714' : ' ') + " Initial"); Controller.cms.Items[3].Click += new EventHandler(cms_Initial); 
      Controller.cms.Items.Add("Trap"); Controller.cms.Items[4].Click += new EventHandler(cms_Trap); 
      if (!contextS.error.Equals("")) 
      { 
       Controller.cms.Items.Add("Error: " + contextS.error); 
       Controller.cms.Items[5].Enabled = false; 
      } 
     } 
     else if((contextA = FiniteAutomationData.GetActionFrom(mouseX,mouseY)) != null) // Rclick Action 
     { 
      Controller.cms.Items.Add("Delete"); Controller.cms.Items[0].Click += new EventHandler(cms_DeleteAction); 
     } 
     else // Rclick null 
     { 
      Controller.cms.Items.Add("Add State"); Controller.cms.Items[0].Click += new EventHandler(cms_AddState); 
     } 
    } 
+0

私たちにいくつかのコードを見せてください。 –

+0

私は推測しているコードを追加しました。このコードがどれだけ問題になるかわかりません... – SHsuperCM

+0

少なくとも、あなたの目標を達成するための努力が示されています。 –

答えて

0

私は私がコントローラーのMouseDownイベントのイベントを使用してフラグを使用していなかった本当に悪いものですが、解決策はまだ..

考える解決策を見つけることができた最後の3日間を通じて、 、 最初にコンテキストメニューを表示しました表示(ポイント)メソッド。

showメソッドはメニューを少しオフにして、正しく配置するには "new point(eX、e.Y + 45)"で解決しましたが、私はそれをやっているのが好きではありません本当にプロフェッショナルなようです。

とにかく私は推測します..

関連する問題