contextMenu动态调用时的问题?

junsheng 2004-12-08 12:22:34

这个contextMenu是在运行时生成的,包括其中的菜单也是动态生成的。
private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if ((e.KeyCode == Keys.A)&&(e.Control==true))
{
str=Microsoft.VisualBasic.Interaction.InputBox("input","abc","abcd",100,100);
//调用VB的inputBox();
contextMenu1.MenuItems.Add(str);
}
Point ClickPoint = new Point(100,100);
if ((e.KeyCode == Keys.S)&&(e.Control==true))
{
contextMenu1.Show(this,ClickPoint);
}
问题是如何响应菜单中选项,要用那个事件,我用了menuItem1_Click(object sender, System.EventArgs e)没有反应.
...全文
133 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightheroes 2004-12-08
  • 打赏
  • 举报
回复
contextMenu1.MenuItems.Add(str);
-------->

MenuItem mi = new MenuItem(str);
mi.Click += new EventHandler(mi_Click);
contextMenu1.MenuItems.Add(mi);

...............


private void mi_Click(object sender, EventArgs e)
{
//处理你的响应
}
完美实现真彩自绘菜单 相当不错的源码 1、MFC框架调用的GetMenu()->MeasureItem()就相当于调用了CMenuEx::MeasureItem(),从而实现自绘菜单控件尺寸的测量。 2、MFC框架调用GetMenu()->DrawItem()就相当于调用了CMenuEx::DrawItem()来实现自绘菜单控件的自绘操作(不懂??,这正是C++的虚拟的妙用,指向派生类对象的基类指针可以调用派生类的虚拟函数,多么伟大的发明,谁想出来的???)。与子菜单是否为弹出菜单(popupmenu)没有什么关系。以下是摘自WINCORE.CPP的一段程序,也就是WM_MEASUREITEM消息的默认流向的地方,相信大家会从中看出一些端倪。 void CWnd::OnMeasureItem(int /*nIDCtl*/, LPMEASUREITEMSTRUCT lpMeasureItemStruct) { if (lpMeasureItemStruct->CtlType == ODT_MENU) { ...... // 如果没有主菜单 if (pThreadState->m_hTrackingWindow == m_hWnd) { ...... } else { // 如果有主菜单 pMenu = GetMenu(); // 找到窗体的主菜单,注意,pMenu的是CMenu* 类型 } // 在当前菜单中寻找ID匹配的菜单项 pMenu = _AfxFindPopupMenuFromID(pMenu, lpMeasureItemStruct->itemID); if (pMenu != NULL) // 如果找到,就调用MeasureItem() // 这就是所谓的基类指针指向派生类对象,可以调用派生类虚拟函数的情况了 pMenu->MeasureItem(lpMeasureItemStruct); else TRACE1("Warning: unknown WM_MEASUREITEM for menu item 0x%04X.\n", lpMeasureItemStruct->itemID); } else { ...... } ...... }

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧