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

我认为这与铸造有关:


首先,我为我的图片框声明一个事件处理程序:


        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 以便上述代码可以工作吗?


天涯尽头无女友
浏览 845回答 2
2回答

UYOU

如果您想检查在移动鼠标时是否按下了鼠标按钮,那么您应该订阅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).    }}

交互式爱情

你能把苹果变成橙子吗?不。好吧,你不能仅仅MouseEventArgs从一个EventArgs实例中创建一个。在这种情况下,您的代码没有意义。您正在尝试获取悬停事件的按钮。无需点击任何按钮即可完成悬停。如果您想知道悬停时按下的按钮,则需要先缓存MouseDown和MouseUp事件以注册单击了哪个按钮。
打开App,查看更多内容
随时随地看视频慕课网APP