0

我有一个包含 Atalasoft 的 AnnotateViewer 的 SplitContainer。类层次结构如下:

System.Windows.Forms.Control
  Atalasoft.Imaging.WinControls.ScrollPort
    ...
      Atalasoft.Annotate.UI.AnnotateViewer
        My.AnnotateViewer

现在的问题:只要 SplitContainer 的内容小于实际视口,因此没有可见的滚动条,触摸输入被解释为鼠标左下,鼠标移动和鼠标左上,这正是我所期望和喜欢的看。我仍然可以使用两指平移来滚动视图。但是:如果我缩放查看器,使我的内容变得比我的视口大,滚动条会出现并且触摸输入的行为会有所不同:水平平移保持不变,但现在垂直平移会导致滚动,即使用一个手指也是如此。

问题是:这种行为是特定于 Atalasoft、特定于 WinForms 还是特定于系统的,我可以做些什么来改变它吗?我希望单指始终转换为左键单击和移动。两个手指的滚动很好(并且已经工作了。)

我担心它是特定于系统的,因为您可以在 Word 2010 中找到完全相同的行为。不过,它是 Microsoft 产品。

4

2 回答 2

0

SetGestureConfig API 接受 GESTURECONFIG 结构作为其第四个参数。如何传入 GESTURECONFIG[] 数组?

于 2014-09-25T11:52:03.753 回答
0

我开始讨厌这样一个事实,即您在最终将您的问题输入论坛或类似网站后经常突然获得灵感。

现在通过重新注册手势事件解决了这个问题。您可以注册除水平和/或垂直单指平移之外的所有平移手势。

// adapt the gesture registration for this window
GESTURECONFIG[] gestureConfig = new[]
{
    // register for zoom gesture
    new GESTURECONFIG { dwID = GID_ZOOM, dwWant = GC_ZOOM, dwBlock = 0 },
    // register for pan gestures but ignore single finger (only use two-finger-pan to scroll)
    new GESTURECONFIG { dwID = GID_PAN, dwWant = GC_PAN, dwBlock = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY }
};
SetGestureConfig(this.Handle, 0, (uint)gestureConfig.Length, gestureConfig, (uint)Marshal.SizeOf(typeof(GESTURECONFIG)));

详细信息:http: //msdn.microsoft.com/de-de/library/dd353241%28v=vs.85%29.aspx

我认为这是您可以获得的最干净的解决方案。

于 2013-04-25T12:31:13.120 回答