社区
C#
帖子详情
连问几篇,都没有人回答。请高手帮忙。(思归,班门斧)请进
zhehui
2003-07-30 11:45:02
请问二个richTextBox的竖直滚动条如何同步的滚动。
请写下一段代码
...全文
83
23
打赏
收藏
连问几篇,都没有人回答。请高手帮忙。(思归,班门斧)请进
请问二个richTextBox的竖直滚动条如何同步的滚动。 请写下一段代码
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qddmha
2003-08-22
打赏
举报
回复
这样的问题解决思路不难想到
chenxy2002
2003-08-14
打赏
举报
回复
MARK!
snowflake310
2003-08-12
打赏
举报
回复
UP
TheAres
2003-08-12
打赏
举报
回复
还有什么问题吗?
zhehui
2003-08-07
打赏
举报
回复
果然是问题多多,还得继续研究。
zhehui
2003-08-04
打赏
举报
回复
看来要达到到班门斧大哥的水平,看来还得需要二年的努力。
wangzs79
2003-08-04
打赏
举报
回复
班门斧大哥的程序中
1:RichTextBox2 和 RichTextBox1保持同步,但是 RichTextBox1 不能和 RichTextBox2 同步
2:如果使用键盘的上下键或者鼠标在 RichTextBox1 里移动(或者选择),RichTextBox2不做任何滚动
sunking
2003-08-04
打赏
举报
回复
呵呵,建议多学API,没有难事能难倒
TheAres
2003-08-03
打赏
举报
回复
来报个到,回去研究一下在回帖。
shixueli
2003-08-03
打赏
举报
回复
richTextBox没用过,帮你up
TheAres
2003-08-03
打赏
举报
回复
RichTextBox中并没有提供对滚动事件的支持,所以后面的那个MyRichTextBox是继承了一个RichTextBox,在WndProc中截获WM_VSCROLL(垂直滚动)消息,然后调用GetScrollPos来得到滚动条的位置,通过VScroll事件发送出去。
然后在VScroll事件中,通过SendMessage发送EM_SETSCROLLPOS消息,告诉另一个相应滚动。
zhehui
2003-08-03
打赏
举报
回复
请将你的程序原理说明一下。效果运行得还不错。
zhehui
2003-08-03
打赏
举报
回复
有很多的API函数我还是有点不好理解。
zhehui
2003-08-03
打赏
举报
回复
高手出动,果然不一样。看来我也要加入这一行列。
jianglinchun
2003-08-03
打赏
举报
回复
嗬嗬,班门斧果然是班门斧哦。
TheAres
2003-08-03
打赏
举报
回复
完整代码如下,注释比较少,没有写清楚的地方可以在这里发贴问。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
/// <summary>
/// Form7 摘要说明。
/// </summary>
public class Form7 : System.Windows.Forms.Form
{
private MyRichTextBox richTextBox1;
private RichTextBox richTextBox2;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form7()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.richTextBox1 = new WindowsApplication1.MyRichTextBox();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(96, 48);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(144, 232);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "richTextBox1";
this.richTextBox1.VScroll += new WindowsApplication1.MyRichTextBox.ScrollEventHandler(this.richTextBox1_VScroll);
//
// richTextBox2
//
this.richTextBox2.Location = new System.Drawing.Point(312, 48);
this.richTextBox2.Name = "richTextBox2";
this.richTextBox2.Size = new System.Drawing.Size(144, 232);
this.richTextBox2.TabIndex = 1;
this.richTextBox2.Text = "richTextBox2";
//
// Form7
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(624, 342);
this.Controls.Add(this.richTextBox2);
this.Controls.Add(this.richTextBox1);
this.Name = "Form7";
this.Text = "Form7";
this.Load += new System.EventHandler(this.Form7_Load);
this.ResumeLayout(false);
}
#endregion
private void Form7_Load(object sender, System.EventArgs e)
{
this.richTextBox1.Clear();
this.richTextBox2.Clear();
for( int i = 0; i < 100; i++ )
{
this.richTextBox1.AppendText( i.ToString() + Environment.NewLine );
this.richTextBox2.AppendText( i.ToString() + Environment.NewLine );
}
}
[DllImport("user32", CharSet=CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, POINT lParam);
private const Int32 SB_VERT = 0x00000001;
const int EM_SETSCROLLPOS = 0x0400 + 222;
private void richTextBox1_VScroll(object sender, int position)
{
SendMessage(richTextBox2.Handle, EM_SETSCROLLPOS, 0, new POINT(0, position));
}
public static void Main()
{
Application.Run( new Form7() );
}
}
[StructLayout(LayoutKind.Sequential)]
public class POINT
{
public int x;
public int y;
public POINT()
{
}
public POINT(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class MyRichTextBox: RichTextBox
{
[DllImport("user32")]
private static extern int GetScrollPos(IntPtr hWnd, Int32 nBar);
private const Int32 WM_VSCROLL = 0x00000115;
private const Int32 SB_VERT = 0x00000001;
public delegate void ScrollEventHandler(object sender, Int32 position);
public event ScrollEventHandler VScroll;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_VSCROLL)
{
int position = GetScrollPos(m.HWnd, SB_VERT);
VScroll(this, position);
}
base.WndProc(ref m);
}
}
}
zhehui
2003-08-01
打赏
举报
回复
我的问题就是,一个richTextBox1的滚动条在滚动时,另一个richTextbox2的滚动条也在同步滚动。二个richTextBox的高度一样。
看来高手都是深藏不露。
维她奶
2003-07-31
打赏
举报
回复
en......这样功能的程序没有做过,最近也比较忙经常要该bug-_-没时间写个程序来测试一下,还是帮楼主友情up!!!!
einsteincao
2003-07-31
打赏
举报
回复
very easy
zhehui
2003-07-31
打赏
举报
回复
我的问题就是,一个richTextBox1的滚动条在滚动时,另一个richTextbox2的滚动条也在同步滚动。二个richTextBox的高度一样。
加载更多回复(3)
河南旅游导游词介绍5篇精选.doc
6. 八戒不
思归
:石头造型犹如猪八戒,让人联想到《西游记》的故事。 【注意事项】 在游览过程中,
请
注意安全,避免拥挤,保护环境,做到看景不走路,走路不看景,并尊重当地的文化和生态。 【其他景点】 除了...
2019_2020学年高中语文第三单元10与尹师鲁第一书课件粤教版选修唐宋散文蚜202004302144
1. 诗词赏析:《晚泊岳阳》是欧阳修的一首诗,通过描绘夜晚停泊岳阳城下的景色,表达诗人旅途中的
思归
之情。诗以“卧闻”开篇,展示出悠闲自适的心态,而“城里钟”与“城下树”形成对比,引发对家乡的思念。通过...
【少儿综合素质训练】描写友谊的唯美诗句集锦.doc
【少儿综合素质训练】这篇文档是一份关于友谊的唯美诗句集锦,主要收集了古人的诗词中对友情的描绘,旨在教育孩子们理解友谊的美好,并通过诗歌熏陶他们的情感世界。 【友谊的定义】友谊是一种深厚的情感连接,能给...
大牟家初级中学八年级下学期第六单元测试语文试卷精选.doc
这篇语文试卷精选主要涵盖中学语文基础知识,包括词语填空、字形辨析、诗词默写、语句选择、名著阅读及仿写等多方面内容。以下是对这些知识点的详细说明: 1. 词语填空:这段文字考察的是学生对汉字的理解和书写...
浅析《诗经》中的离别情怀
《诗经》是我国最早的一部诗歌总集,它记录了西周初年至春秋中叶约五百年间的诗歌作品,共三百零五篇。《诗经》的诗歌内容丰富,形式多样,其中对于离别情怀的描写尤为深入人心。本文将通过分析《诗经》中的离别诗,...
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章