鼠标按钮事件......简单的问题 [英] mouse button events...simple question
问题描述
好的,我一直在自己编程,所以我可以尝试使用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.ScrollToHorizontalOffset(scrollview.HorizontalOffset - 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;自动" HorizontalScrollBarVisibility = 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.ScrollToHorizontalOffset(svScrollViewer.HorizontalOffset - 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屋!