Form1中只有一个RichTextBox控件(占满Form,Dock属性为Fill)
我想用两个按钮(上移、下移)来控制RichTextBox滚动条的位置(如 点"下移" 滚动条会向下滑动) 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控件的滚动条才会移动
这改如何解决呢? 或者还有上面其他的方法不
我想用两个按钮(上移、下移)来控制RichTextBox滚动条的位置(如 点"下移" 滚动条会向下滑动) 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控件的滚动条才会移动
这改如何解决呢? 或者还有上面其他的方法不
解决方案 »
- 怎么加快读文件的速度
- 用#ziplib可不可以不解压,直接删除zip中的部分文件
- 【求助】在Winform里面怎么从Textbox里面获取数值,然后求和在Label上显示结果?
- C#调用VC DLL 输出参数 急!!!
- DataGridView刷新问题
- Panel上的滚动条如何响应PageDown?
- 请问PropertyGrid能否可以取到所显示的内容?
- 使用 datagrid 有无人遇到跟我相同状况
- VS2003建的网站项目,转为VS2008出现错误提示找不到“.csproj
- Shortcut的问题!
- 求写一个LINQ GROUPBY
- 用户代码未处理 System.NullReferenceException
static extern void mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);参数貌似对应不上阿
既然是这样的格式,你就应该按规矩办事,几个参数不可能都初始化为零吧
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hwnd,int msg,int lp,IntPtr rp);
SendMessage(richTextBox1.Handle, 0x115, 7, IntPtr.Zero);
明天去试一试
static extern int SetScrollPos(IntPtr hwnd, int bar, int position, int redraw);
SetScrollPos(richTextBox1.Handle, 1, 200, 1);
还是sendmessage吧,第一个参数是控件的句柄,第三个参数=1,向下一行,=0,向上一行。
然后我换了个RichTextBox试了下 也没反应
如果是RichTextBox 都是OK的SendMessage(this.richTextBox1.Handle, 0x115, 1, IntPtr.Zero);
换成了我用的COM组件控件的话就没效果了 SendMessage(this.axAcroPDF.Handle, 0x115, 1, IntPtr.Zero);
难道SendMessage不支持Com组件?
把
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);
写两遍,如下
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 300, 0);
我也不知道为什么要这样,反正我知道这样能行
就是用上面的方法来解决的