为了账号安全,请及时绑定邮箱和手机立即绑定

c# 我可以将 EventArgs 转换为 MouseEventArgs 吗?

c# 我可以将 EventArgs 转换为 MouseEventArgs 吗?

C#
天涯尽头无女友 2021-07-14 13:01:22
我认为这与铸造有关:首先,我为我的图片框声明一个事件处理程序:        pictureBox1.MouseHover += new EventHandler(this.pictureBox1_MouseHover);接下来,我试图检查鼠标左键是否被按下:    private void pictureBox1_MouseHover(object sender, EventArgs e)    {        if (e.Button == MouseButtons.Left)        {            /*some gibberish for when the left mouse button is held*/        }    }但这不起作用,因为EventArgs不是MouseEventArgs我可以Cast或以某种方式转换EventArgs e为被视为 MouseEventArgs 以便上述代码可以工作吗?
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

如果您想检查在移动鼠标时是否按下了鼠标按钮,那么您应该订阅PictureBox.MouseDown,PictureBox.MouseMove和PictureBox.MouseUpevents 如果您想从您第一次按下按钮的那一点开始记录鼠标移动,同时您仍然在移动鼠标按住按钮和松开按钮时。


private void PictureBox_MouseDown(object sender, MouseEventArgs e)

{

    if (e.Button == MouseButtons.Left)

    {

        //Handle mouse down logic here (press).

    }

}


private void PictureBox_MouseMove(object sender, MouseEventArgs e)

{

    if (e.Button == MouseButtons.Left)

    {

        //Handle mouse move logic here (hold).

    }

}


private void PictureBox_MouseUp(object sender, MouseEventArgs e)

{

    if (e.Button == MouseButtons.Left)

    {

        //Handle mouse up logic here (release).

    }

}


查看完整回答
反对 回复 2021-07-17
?
交互式爱情

TA贡献1712条经验 获得超3个赞

你能把苹果变成橙子吗?不。好吧,你不能仅仅MouseEventArgs从一个EventArgs实例中创建一个。

在这种情况下,您的代码没有意义。您正在尝试获取悬停事件的按钮。无需点击任何按钮即可完成悬停。如果您想知道悬停时按下的按钮,则需要先缓存MouseDownMouseUp事件以注册单击了哪个按钮。


查看完整回答
反对 回复 2021-07-17
  • 2 回答
  • 0 关注
  • 843 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信