读书人

怎么用按钮控制WINFORM中PDF控件滚动条

发布时间: 2012-03-24 14:00:46 作者: rapoo

高手进 如何用按钮控制WINFORM中PDF控件滚动条的位置
Form1中只有一个RichTextBox控件(占满Form,Dock属性为Fill)
我想用两个按钮(上移、下移)来控制RichTextBox滚动条的位置(如 点"下移" 滚动条会向下滑动)

C# code
        private void Form_Preview_Load(object sender, EventArgs e)        {           //加载PDF           this.axAcroPDF.LoadFile(pdfPath);         }        #region 上下移动按钮        [DllImport("user32.dll")]        static extern void mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);        const int MOUSEEVENTF_WHEEL = 0x800;        /// <summary>        /// 上移        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnPrivous_Click(object sender, EventArgs e)        {            this.axAcroPDF.Focus();            mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);        }        /// <summary>        /// 下移        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnNext_Click(object sender, EventArgs e)        {            this.axAcroPDF.Focus();            mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -300, 0);        }        #endregion

上面的代码是上下移动按钮的事件,但是必须要点两次按钮,PDF控件的滚动条才会移动
这改如何解决呢? 或者还有上面其他的方法不


[解决办法]
哥们儿你这帖可开的真多,还能猴子来给你解吧!(顺便问哈,给我搞100分不行?)
[解决办法]

static extern void mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);

参数貌似对应不上阿
[解决办法]
mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);


既然是这样的格式,你就应该按规矩办事,几个参数不可能都初始化为零吧
[解决办法]
C# code
[DllImport("user32.dll")]static extern int SendMessage(IntPtr hwnd,int msg,int lp,IntPtr rp);SendMessage(richTextBox1.Handle, 0x115, 7, IntPtr.Zero);
[解决办法]
这个我看行
[解决办法]
SENDMESSAGE和POSTMESSAGE试试。。。。我用MOUSE_EVENT做的时候也不给力的说!

基本上就这几个玩意轮着来,总有一个适合你的!
[解决办法]
上面那个通过修改第三个参数可以实现步进,后退,顶部,底部,下面有个精确控制移动到哪个位置的,比如移动到位置200
C# code
[DllImport("user32.dll")]static extern int SetScrollPos(IntPtr hwnd, int bar, int position, int redraw);SetScrollPos(richTextBox1.Handle, 1, 200, 1);
[解决办法]
探讨
引用:

上面那个通过修改第三个参数可以实现步进,后退,顶部,底部,下面有个精确控制移动到哪个位置的,比如移动到位置200
C# code

[DllImport("user32.dll")]
static extern int SetScrollPos(IntPtr hwnd, int bar, int position, int redraw……

[解决办法]
C# code
把mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);写两遍,如下mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);我也不知道为什么要这样,反正我知道这样能行 

读书人网 >C#

热点推荐