Member 13396929 Ответов: 0

Ввод мыши в приложении c# windows forms


Здравствуйте Коллеги Программисты,

Я сделал приложение c# Windows Forms в Visual Studio 2017, которое открывает любой PDF-файл. Форма, которую я использую при запуске приложения, - это поле с кнопкой (чтобы открыть pdf-файл), два текстовых поля, которые дают координаты X и Y мыши, и поле, в котором открывается PDF-файл. К сожалению, всякий раз, когда я нажимаю на поле PDF, ничего не происходит. Как мне взаимодействовать с pdf-файлом и показывать пользователю, где находится мышь во время щелчка?

Код для открытия PDF:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e) //button to open PDF
        {
            OpenFileDialog openFileDialogE = new OpenFileDialog();

            if (openFileDialogE.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axAcroPDF1.src = openFileDialogE.FileName;
            }
        }

        private void axAcroPDF1_MouseClick(object sender, MouseEventArgs e)
// supposed to record position on click        
{
            base.OnMouseClick(e);
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();
        }

        private void axAcroPDF1_MouseUp(object sender, MouseEventArgs e)
        // supposed to record position on release
        {
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();
            Console.WriteLine("mouse up");
        }
    }
}


Что я уже пробовал:

Я настроил существующий код, который дает пользователю координаты кликов, где бы он ни нажимал в графическом поле. Я изменил его так, чтобы он, возможно, работал с коробкой PDF. Я использовал его в своем коде на C#. Я также протестировал существующую программу сам по себе, и она тоже не работала.
В конце концов я хочу вывести на экран расстояние между тем, когда я начинаю щелкать, и тем, когда я отпускаю.

Оригинальный код:



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

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

        protected void pictureBox1_MouseClick(MouseEventArgs e)
        {
            base.OnMouseClick(e);
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();
        }

       private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            textBox1.Text = e.X.ToString();
            textBox2.Text = e.Y.ToString();
            Console.WriteLine("mouse up");
        }
    }
}

Richard MacCutchan

Где находится код для отображения PDF-файла?

Member 13396929

Он в первом окне. Он находится в разделе " private void button1_MouseClick()"

Richard MacCutchan

Неужели? Я не могу найти никакого метода с такой подписью. И если вы не можете точно объяснить, где находится код и что он должен делать, и в чем проблема, вряд ли кто-то может предложить какие-либо предложения.

Member 13396929

Я сделал несколько небольших изменений в своем вопросе, можете ли вы теперь определить код?

Richard MacCutchan

Нет, я все еще не вижу метода с именем button1_MouseClick() Вы действительно написали этот код? И единственное место, где я могу увидеть ссылку на PDF-файл, - это axAcroPDF1.src = openFileDialogE.FileName;- Это должно быть сделано для показа?

Member 13396929

Я вижу, я забыл изменить его на button1_Click

BillWoodruff

Интерфейс CON Acrobat Reader очень ограничен.

См.: https://stackoverflow.com/questions/30452420/capture-click-events-inside-a-wpf-webbrowser-control-showing-a-pdf-document

0 Ответов