0
我已經通過面板的擴展以及其他一些東西以編程方式添加了contextmenustrip, 它通過面板的構造函數被設置到面板的contextmenu中。ContextMenuStrip第一次沒有被右鍵點擊顯示
第一次我右鍵單擊不起作用,然後它會在第一次總是。
我曾嘗試也把的ContextMenuStrip的構造和它在其他地方,如負載和窗體的構造,甚至在同一個標志,一個計時器面板的上下文菜單中分配,所有生產的同結果..
編輯:(根據要求(因爲它是切到重要點)的某些代碼)
class FiniteAutomationController : System.Windows.Forms.Panel
{
public FiniteAutomationController()
: base()
{
this.ContextMenuStrip = (cms = new ContextMenuStrip());
}
public ContextMenuStrip cms;
}
編輯:(每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);
}
}
給我們一些代碼。 –
我已經添加了代碼我猜..我不知道這個代碼會有多重要... – SHsuperCM
至少,它表明努力完成您的目標。 –