Как автоматически прокрутить полосу прокрутки на панели форм Windows сверху вниз при загрузке формы? - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю открывалку PDF-файлов в Windows, используя c #.Я хочу, чтобы Windows формировала форму для захвата имени файла pdf из определенной папки в комбинированный список и заставляла комбинированный список выбирать следующий контент через каждые x минут.Но из-за того, что axAcroPDF1 использует настройки из Adobe Reader, я не могу заставить одну страницу уместиться на весь экран без сохранения соотношения, которое оставляет огромную незаполненную область слева и справа без сохранения исходного соотношения сторон.Поскольку я не могу избавиться от него с помощью Adobe Reader, я должен использовать по ширине, но это делает страницу слишком большой для читателя, и я не могу просматривать весь контент без прокрутки вниз.

Я имеюперепробовал все, что мог придумать, но я не могу заставить его работать.

private void Form1_Load(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Maximized;
            DirectoryInfo test = new DirectoryInfo(@"\c:\temp\"); 
            FileInfo[] Files = test.GetFiles("*.pdf"); //Getting Text files

            var fileNames = Files.Select(f => Path.GetFileNameWithoutExtension(f.Name)).ToList();
            comboBox1.DataSource = fileNames;
            timerset();
        }


        private void panel1_ControlAdded(object sender, ControlEventArgs e)
        {

        }

        public void axSetting()
        {
            axAcroPDF1.setShowToolbar(false);
            axAcroPDF1.setView("FitH");
            axAcroPDF1.setPageMode("none");
            axAcroPDF1.setShowScrollbars(false);
            axAcroPDF1.setLayoutMode("SinglePage");            
            axAcroPDF1.Show();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            axAcroPDF1.LoadFile(@"c:\temp\ + comboBox1.Text + ".pdf");
            axAcroPDF1.src = @"c:\temp\" + comboBox1.Text + ".pdf";
            axSetting();
        }

        public void comboBoxSelect()
        {
            if (comboBox1.SelectedIndex < (comboBox1.Items.Count - 1))
            {
                comboBox1.SelectedIndex += 1;
            }
            else
            {
                comboBox1.SelectedIndex = 0;
                DirectoryInfo test = new DirectoryInfo(@"c:\temp\");
                FileInfo[] Files = test.GetFiles("*.pdf");

                var fileNames = Files.Select(f => Path.GetFileNameWithoutExtension(f.Name)).ToList();
                comboBox1.DataSource = fileNames;
            }
        }

        public void timerset()
        {
            timer1 = new System.Windows.Forms.Timer();
            timer1.Tick += new EventHandler(timer1_Tick);
            timer1.Interval = 10000; // in miliseconds            
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            comboBoxSelect();
        }

Как сделать автоматическую прокрутку на панели для прокрутки сверху вниз при загрузке каждого файла PDF?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Попробуйте сейчас, это работает: я изменил их, чтобы быть правдой: AxAcroPDF1.setShowToolbar(True) axAcroPDF1.setShowScrollbars(True);, и я добавил comboBox1.SelectedIndex = 1; и axAcroPDF1.AutoScrollOffset = new Point(axAcroPDF1.AutoScrollOffset.X, 10); axAcroPDF1.AutoScrollOffset = new Point(axAcroPDF1.AutoScrollOffset.Y, 10);

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Maximized;
            DirectoryInfo test = new DirectoryInfo(@"c:\temp\");
            FileInfo[] Files = test.GetFiles("*.pdf"); //Getting Text files

            var fileNames = Files.Select(f => Path.GetFileNameWithoutExtension(f.Name)).ToList();
            comboBox1.DataSource = fileNames;
            comboBox1.SelectedIndex = 1;
       axAcroPDF1.AutoScrollOffset = new Point(axAcroPDF1.AutoScrollOffset.X, 10);
        axAcroPDF1.AutoScrollOffset = new Point(axAcroPDF1.AutoScrollOffset.Y, 10);
            timerset();
        }


        private void panel1_ControlAdded(object sender, ControlEventArgs e)
        {

        }

        public void axSetting()
        {
            axAcroPDF1.setShowToolbar(true);
            axAcroPDF1.setView("FitH");
            axAcroPDF1.setPageMode("none");
            axAcroPDF1.setShowScrollbars(true);
            axAcroPDF1.setLayoutMode("SinglePage");
            axAcroPDF1.Show();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            axAcroPDF1.LoadFile(@"c:\temp\" + comboBox1.Text + ".pdf");
            axAcroPDF1.src = @"c:\temp\" + comboBox1.Text + ".pdf";
            axSetting();
        }

        public void comboBoxSelect()
        {
            if (comboBox1.SelectedIndex < (comboBox1.Items.Count - 1))
            {
                comboBox1.SelectedIndex += 1;
            }
            else
            {
                comboBox1.SelectedIndex = 0;
                DirectoryInfo test = new DirectoryInfo(@"c:\temp\");
                FileInfo[] Files = test.GetFiles("*.pdf");

                var fileNames = Files.Select(f => Path.GetFileNameWithoutExtension(f.Name)).ToList();
                comboBox1.DataSource = fileNames;
            }
        }

        public void timerset()
        {
            timer1 = new System.Windows.Forms.Timer();
            timer1.Tick += new EventHandler(timer1_Tick);
            timer1.Interval = 10000; // in miliseconds            
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            comboBoxSelect();
        }
    }
}
0 голосов
/ 20 декабря 2018

Я обычно устанавливаю AutoScrollPosition следующим образом.
Этот код должен присутствовать в событии Shown() формы (не Load()).

[ScrollableContainer].AutoScrollPosition = 
    new Point(0, [ChildControl].Height - [ScrollableContainer].Height);

Размер [ChildControl], конечно, больше, чем у [ScrollableContainer].

Это также может быть просто:

[ScrollableContainer].AutoScrollPosition = new Point(0, [ChildControl].Height);
...