温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ContextMenuStrip控件 位置 传值

发布时间:2020-07-18 14:04:05 来源:网络 阅读:2052 作者:起名好难 栏目:编程语言

   对于这个控件,我们常用的方式是是直接把他从属控件的属性ContextMenuStrip设置为contextMenuStrip1可以保证右键菜单位置的正确性。

   然而有时候我们为了在一个容器特定的位置出现右键菜单,就需要设置ContextMenuStrip的位置了;

S1.声明一个右键菜单控件;

S2.添加右键菜单的内容;

S3.设定使右键菜单跟随鼠标点击位置出现。关键的是其中的位置坐标转换;oView.PointToScreen(e.Location);oView这个对象要选正确,就是要出现右键的容器,用他的坐标转化方法来得到右键出现的位置;

这样可以保证右键菜单出现位置正确了。

附一点代码:


ContextMenuStrip cms = new ContextMenuStrip();
 cms.Items.Add("属性设置");
//坐标转化保证右键菜单出现在点击的位置
Point p = oView.PointToScreen(e.Location);
cms.Show(p);
                                                                                                                                                         
cms.Items[0].Tag = oView;
cms.Items[0].Click += ContextMenuStrip_Click;



另外在做这个开发时,我还遇到了另一个问题,我的右键是设置一个对象的属性,然而在这个Click事件中获取不到这个对象怎么办?我试着用Tag属性将需要的值传递到单击事件中进行处理,结果还可以。

//右键事件
        private void ContextMenuStrip_Click(object sender, EventArgs e)
        {
            XX view = ((ToolStripDropDownItem)(sender)).Tag as XX;
}


还没有完全吃透,仅供参考,若有更好方法望留言告知;谢谢

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI