Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在便签中滚动_Wpf_Scroll_Pdfnet - Fatal编程技术网

Wpf 在便签中滚动

Wpf 在便签中滚动,wpf,scroll,pdfnet,Wpf,Scroll,Pdfnet,我得到了下面的便签示例: 如果便签有9行以上,则其他行不可见。 我可以用我的箭头键浏览便笺。如果我要用鼠标滚轮滚动,它似乎忽略了弹出窗口,只是改变了页面 是否可以为便笺弹出窗口激活滚动 编辑:下面概述的解决方案将很快作为PDFTron SDK下载中包含的示例的一部分提供。同时,我希望下面的解决方案能有所帮助 是的,可以为便笺激活滚动 使用单页视图时,问题最为明显。在连续模式下,它似乎按预期工作 然而,它并不像设置VerticalScrollVisibility=ScrollBarVisibil

我得到了下面的便签示例:

如果便签有9行以上,则其他行不可见。 我可以用我的箭头键浏览便笺。如果我要用鼠标滚轮滚动,它似乎忽略了弹出窗口,只是改变了页面

是否可以为便笺弹出窗口激活滚动

编辑:下面概述的解决方案将很快作为PDFTron SDK下载中包含的示例的一部分提供。同时,我希望下面的解决方案能有所帮助

是的,可以为便笺激活滚动

使用单页视图时,问题最为明显。在连续模式下,它似乎按预期工作

然而,它并不像设置
VerticalScrollVisibility=ScrollBarVisibility.Auto那么简单。有几个文件需要修改以使其正常工作

好消息是,我们可以通过修改提供的示例中的代码来获得预期的行为

解决方案 解决方案是为来自
PDFViewWPF
类的
PreviewMouseWheel
事件添加一些处理。
在下载的示例中,进行了以下更改以使其按预期运行:

  • 添加一个方法来处理
    NoteHost
    类(Samples/pdfviewwwpftools/CS/Utilities/NoteHost.CS)中的PreviewMouseWheel事件

  • 还要确保添加
    mTextBox.VerticalScrollBarVisibility=ScrollBarVisibility.AutomTextBox
    对象之后(~第183行),在
    NoteHost.createnoteandarow()方法中的code>
  • 接下来,编辑
    NoteManager
    类-Samples/pdfviewwwpftools/CS/Utilities/NoteManager.CS-并添加
    handlepreviewmouseheel
    方法。这将在每个显示(打开)的便笺上内部调用
    HandlePreviewMouseWheel
    ,并在处理事件的第一个便笺处中断

    internal void HandlePreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
    {
        foreach(var note in mActiveNotes)
        {
            note.Value.HandlePreviewMouseWheel(sender, e);
            if(e.Handled)
            {
                break;
            }
        }
    }
    
  • 接下来,编辑
    ToolManager
    类,以确保注释管理器在尝试页面更改之前有机会处理
    PreviewMouseWheel
    。打开Samples/PDFViewWPFTools/CS/ToolManager.CS并导航到
    PDFView\u previewmouseheel
    。现有方法应如下所示:

    private void PDFView_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
    {
        if (mCurrentTool != null && _IsEnabled)
        {
            ToolManager.ToolType prev_tm = mCurrentTool.ToolMode;
            ToolManager.ToolType next_tm;
            while (true)
            {
                mCurrentTool.PreviewMouseWheelHandler(sender, e);
                next_tm = mCurrentTool.NextToolMode;
                if (prev_tm != next_tm)
                {
                    mCurrentTool = CreateTool(next_tm, mCurrentTool);
                    prev_tm = next_tm;
                }
                else
                {
                    break;
                }
            }
        }
    }
    
    将其替换为以下代码:

    private void PDFView_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
    {
        if (mCurrentTool != null && _IsEnabled)
        {
            ToolManager.ToolType prev_tm = mCurrentTool.ToolMode;
            ToolManager.ToolType next_tm;
            while (true)
            {
                mNoteManager.HandlePreviewMouseWheel(sender, e);
                if (!e.Handled)
                {
                    mCurrentTool.PreviewMouseWheelHandler(sender, e);
                    next_tm = mCurrentTool.NextToolMode;
                    if (prev_tm != next_tm)
                    {
                        mCurrentTool = CreateTool(next_tm, mCurrentTool);
                        prev_tm = next_tm;
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
        }
    }
    
通过执行上述操作,我们为
NoteManager
提供了一个在对其执行任何其他操作之前处理
PreviewMouseWheel
的机会


另一点需要注意的是,我们现在必须使用
NoteHost
类中的
mTextBox.ScrollToVerticalOffset
方法在代码中执行“滚动”

您使用的是PDFViewCtrl还是PDFViewWPF类进行查看?我使用的是pdfviewpf。感谢您的澄清,我们现在正在研究这个问题,很快就会给你更新的,就像我预期的那样。非常感谢你!
private void PDFView_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
    if (mCurrentTool != null && _IsEnabled)
    {
        ToolManager.ToolType prev_tm = mCurrentTool.ToolMode;
        ToolManager.ToolType next_tm;
        while (true)
        {
            mNoteManager.HandlePreviewMouseWheel(sender, e);
            if (!e.Handled)
            {
                mCurrentTool.PreviewMouseWheelHandler(sender, e);
                next_tm = mCurrentTool.NextToolMode;
                if (prev_tm != next_tm)
                {
                    mCurrentTool = CreateTool(next_tm, mCurrentTool);
                    prev_tm = next_tm;
                }
                else
                {
                    break;
                }
            }
            else
            {
                break;
            }
        }
    }
}