您的位置:首页 > 编程语言 > C#

c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法

2015-05-29 17:23 701 查看
两个Panel控件,里分分别有一个Label,分别是label1,text是192.168.1.2,和label2,text是192.168.1.3,代表客户端的两台客户机,

这两个label都绑定了一个叫ContextMenuStrip1的控件,菜单有两个,一个是关机,一个是重启。

    



    由于两个图标代表两个不同的客户端,右键菜单有两个子菜单,一个是关机,一个是重启,很明显,右击哪个客户端panel,弹出的菜单及执行的命令都是一样的,那我如何知道点了关机以后到底是让哪个客户端关机呢?本文来自逍遥一生:http://www.xiaoyaolife.com/

双击contextMenuStrip1在它的opening事件中写入下面的代码:

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)

        {

            string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name;

            MessageBox.Show(whichcontrol_name);

        }

运行结果:

右击panel2中的label2



有的朋友说你这有什么用,也得到到那个label中的ip值,
本文来自逍遥一生:http://www.xiaoyaolife.com/

看下面的方法:

1、

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)

        {

            Panel whichcontrol_name= (Panel)(sender as ContextMenuStrip).SourceControl;

            Label l = (Label)whichcontrol_name.Controls[0];

            MessageBox.Show(l.Text);

        }

或者本文来自逍遥一生:http://www.xiaoyaolife.com/

2、

        private void Form1_Load(object sender, EventArgs e)

        {

            panel1.Name = "192.168.1.2";

            panel2.Name = "192.168.1.3";

        }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)

        {

            string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name;

            MessageBox.Show(whichcontrol_name);

        }

这次我右击panel1中的label1

结果是:



当然或许客户端的panel是动态添加的,反正在添加的时候给它一个name就可以了。
本文来自逍遥一生:http://www.xiaoyaolife.com/

我们可以定义一个全局变量

        string ip = null;

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)

        {

            string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name;

            ip = whichcontrol_name ;       

        }

这样就在全局范围内可以调用这个ip值了,也就是知道了你现在正在操作哪个客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: