C#中menu的显示问题
我现在想做这么个事,就是当你点击菜单项时,我要先弹出来MessageBox,根据选择Yes No来决定是否显示相应菜单下的选项。不知道这个怎么做?还望大家帮忙啊!!!用C#开发的,menu采用的是ToolStripMenuItem。 --------------------编程问答-------------------- 你的问题在哪里啊?ToolStripMenuItem的返回事件不都在一起么,你先弹出MessageBox不就行了? --------------------编程问答-------------------- 现在问题是,我可以在Menu的activate事件里弹message,但是无论我选yes还是no,被选择的菜单项总是被显示。我debug是发现,当我选择菜单时,首先触发的是activate,之后还是会把菜单里的菜单项都显示出来。 --------------------编程问答-------------------- 我现在就想能不能在activate事件之后根据选择的结果来确定还要不要显示菜单里的各项内容了。 --------------------编程问答-------------------- 在线等呢!!!
那位高手快帮帮我啊。 --------------------编程问答-------------------- 使用一个自定义的ToolStripMenuItem
public class MyToolStripMenuItem : ToolStripMenuItem
{
protected override void OnMouseDown(MouseEventArgs e)
{
if (MessageBox.Show("", "", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
base.OnMouseDown(e);
}
}
}
这样是可以实现你的要求,不过我自己觉得不是很好。等想到更好的办法再贴上来 --------------------编程问答-------------------- 非常感谢!
你的办法我也想过,现在只能用ToolStripMenuItem,不能用自己写的新类。 --------------------编程问答-------------------- 重载 WndProc(ref Message m)在这里面截获点击菜单的事件,这种方法怎么样啊?可是我不知道点击菜单的消息ID是多少阿,实验了也没看出来,查windows消息大全里也没找明白。 --------------------编程问答--------------------
这个你也得继承类来实现啊。。。 --------------------编程问答-------------------- 菜单项MouseOver事件/Click事件 //这两个事件任你选
{
ResultDialog result= MessageBox.Show("你确定要...?");
if(result==Resultdialog.OKCancel)
{
...//如果点击是,你要做的事
}
else
{
...//点击取消,你要做的事
{
} --------------------编程问答--------------------
--------------------编程问答-------------------- 回9楼
//在程序启动时用tempDropDown保存menuItem.DropDown
//ToolStripDropDown tempDropDown;
void menuItem_DropDownOpening(object sender, EventArgs e)
{
if (MessageBox.Show("Open menu?", "", MessageBoxButtons.YesNo) == DialogResult.No)
{
menuItem.DropDown = null;
}
else
{
menuItem.DropDown = tempDropDown;
}
}
那个方法不好用,点击后,无论选什么菜单项都回显示出来。
回10楼
你说的那个事件我找不到,不知道怎么相应。 --------------------编程问答-------------------- 那就动态加载呗。 --------------------编程问答--------------------
10楼的方法可行的。那个事件是menuitem的DropDownOpening事件,你可以在Designer里找到
不过这样做的话,该按钮下的dropdown必须每次被赋值,而不是在Design阶段就被构造好了 --------------------编程问答-------------------- 13楼说的方法,我没试过,我用了个别的方法,继承基类的方法,然后做判断。
谢谢大家的帮忙,谢过了。 --------------------编程问答-------------------- 菜单项MouseOver事件/Click事件 //这两个事件任你选
{
ResultDialog result= MessageBox.Show("你确定要...?");
if(result==Resultdialog.OKCancel)
{
menuItem.DropDown = null;
}
else
{
menuItem.DropDown = tempDropDown;
{
}
补充:.NET技术 , C#