鼠标按钮事件......简单的问题 [英] mouse button events...simple question

查看:86
本文介绍了鼠标按钮事件......简单的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我一直在自己编程,所以我可以尝试使用C#,我正在使用silverlight来完成它。 MSDN库吹出了Java。我印象非常深刻。我有一些代码,我不知道为什么它不起作用。我没有错误或
任何东西,它看起来像我和阅读库100%正确。因此,由于我遇到了C#silverlight差异,我认为可能就是这样。也许有人可以提供帮助。 


 scrollview.MouseLeftButtonDown + = new MouseButtonEventHandler(scrollview_MouseLeftButtonDown); 
scrollview.MouseLeftButtonUp + = new MouseButtonEventHandler(scrollview_MouseLeftButtonUp);

}

void scrollview_MouseLeftButtonUp(object sender,MouseButtonEventArgs e)
{
posAfter = e.GetPosition(scrollview);
double dX = posAfter.X - posBefore.X;
double dY = posAfter.Y - posBefore.Y;
scrollview.ScrollToHorizo​​ntalOffset(scrollview.Horizo​​ntalOffset - dX);
scrollview.ScrollToVerticalOffset(scrollview.VerticalOffset - dY);
}

void scrollview_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
{
posBefore = e.GetPosition(scrollview);
}

我在这里只展示了两个操作。我把它放得非常简单,我只是想尝试使用功能并使其正确。我有一个滚动查看器,我希望鼠标移动来调整偏移量,使其显示为拖动功能。现在
我知道这是一个非常洞穴的人,但我只是想让它工作或了解它为什么不能正常运作。 


我的代码再编译好了没有使用:visual studio 2010 ulitimate


silverlight 5



再次没有错误!!所以所有的名字都在代码中。 

解决方案

伙计,我不知道你有什么样的内容,但我们假设这是一个带有图像的网格。


XAML:

<网格x:名称=" LayoutRoot"> 

< ScrollViewer x:Name =" svScrollViewer" VerticalScrollBarVisibility = QUOT;自动" Horizo​​ntalScrollBarVisibility = QUOT;自动"填充= QUOT; 0">

< Grid
MouseLeftButtonDown =" Grid_MouseLeftButtonDown_1"
MouseMove =" Grid_MouseMove_1"
MouseLeftButtonUp =" Grid_MouseLeftButtonUp_1"
背景="白色>>
< Image Source =" http://wallpapers.free-review.net/wallpapers/23/Frosty_snow_storm_Windows_7_backgrounds.jpg"余量= QUOT; 80 QUOT; />
< / Grid>

< / ScrollViewer>

< / Grid>

C#:

私人布尔拖延; 
private Point posBefore;
private Point posAfter;

private void Grid_MouseLeftButtonDown_1(object sender,MouseButtonEventArgs e)
{
draging = true;
svScrollViewer.Cursor = Cursors.Hand;
posBefore = e.GetPosition(svScrollViewer);
}

private void Grid_MouseLeftButtonUp_1(object sender,MouseButtonEventArgs e)
{
draging = false;
svScrollViewer.Cursor = Cursors.Arrow;
}

private void Grid_MouseMove_1(对象发送者,MouseEventArgs e)
{
if(draging)
{
posAfter = e.GetPosition (svScrollViewer);
double dX = posAfter.X - posBefore.X;
double dY = posAfter.Y - posBefore.Y;
svScrollViewer.ScrollToHorizo​​ntalOffset(svScrollViewer.Horizo​​ntalOffset - dX);
svScrollViewer.ScrollToVerticalOffset(svScrollViewer.VerticalOffset - dY);
posBefore = e.GetPosition(svScrollViewer);
}
}

这里,ScrollViewer不会触发事件,是内容。


如果您想使用其他控件而不是网格,请不要忘记设置背景。如果您没有设置背景,则事件不会触发。




Ok I have been programming on my own so I can try to get the hang of C# and I am using silverlight to do it. The MSDN libraries BLOW Java out of the water. I am very impressed. I have some code that I have NO clue why it will not work. I have no errors or anything and it looks to me and from reading the libraries to be 100% correct. So since I have run into C# silverlight differences I am assume it could be that. Maybe someone here could help. 

        scrollview.MouseLeftButtonDown += new MouseButtonEventHandler(scrollview_MouseLeftButtonDown);
        scrollview.MouseLeftButtonUp += new MouseButtonEventHandler(scrollview_MouseLeftButtonUp);

    }

    void scrollview_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        posAfter = e.GetPosition(scrollview);
        double dX = posAfter.X - posBefore.X;
        double dY = posAfter.Y - posBefore.Y;
        scrollview.ScrollToHorizontalOffset(scrollview.HorizontalOffset - dX);
        scrollview.ScrollToVerticalOffset(scrollview.VerticalOffset - dY);
    }

    void scrollview_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        posBefore = e.GetPosition(scrollview);
    }

I have show you just two operations here. I have put it put pretty simply, again I am just trying to get use to the functionality and get it right. I have a scrollviewer that I want mouse movement to adjust the offset so it appears as a drag feature. now I know this is pretty cave man like but i just want to get it to work or learn why it does not function properly. 

again my code compiles fine no problem. 

Using: visual studio 2010 ulitimate

silverlight 5

again NO errors!! so all names are right in the code. 

解决方案

Hi man, I don't know what kind of content do you have, but let's suppose that is a Grid with an Image.

XAML:

    <Grid x:Name="LayoutRoot">

        <ScrollViewer x:Name="svScrollViewer" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0">
            
<Grid
MouseLeftButtonDown="Grid_MouseLeftButtonDown_1"
MouseMove="Grid_MouseMove_1"
MouseLeftButtonUp="Grid_MouseLeftButtonUp_1"
Background="White">
                <Image Source="http://wallpapers.free-review.net/wallpapers/23/Frosty_snow_storm_Windows_7_backgrounds.jpg" Margin="80"/>
            </Grid>

        </ScrollViewer>

    </Grid>

C#:

        private bool draging;
        private Point posBefore;
        private Point posAfter;

        private void Grid_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
        {
            draging = true;
            svScrollViewer.Cursor = Cursors.Hand;
            posBefore = e.GetPosition(svScrollViewer);
        }

        private void Grid_MouseLeftButtonUp_1(object sender, MouseButtonEventArgs e)
        {
            draging = false;
            svScrollViewer.Cursor = Cursors.Arrow;
        }

        private void Grid_MouseMove_1(object sender, MouseEventArgs e)
        {
            if (draging)
            {
                posAfter = e.GetPosition(svScrollViewer);
                double dX = posAfter.X - posBefore.X;
                double dY = posAfter.Y - posBefore.Y;
                svScrollViewer.ScrollToHorizontalOffset(svScrollViewer.HorizontalOffset - dX);
                svScrollViewer.ScrollToVerticalOffset(svScrollViewer.VerticalOffset - dY);
                posBefore = e.GetPosition(svScrollViewer);
            }
        }

Here, the ScrollViewer doesn't fire the event, is the content.

If you want to use other control instead of the Grid, don't forget to set a Background. If you don't set a Background the event doesn't fire.


这篇关于鼠标按钮事件......简单的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆