社区
C#
帖子详情
连问几篇,都没有人回答。请高手帮忙。(思归,班门斧)请进
zhehui
2003-07-30 11:45:02
请问二个richTextBox的竖直滚动条如何同步的滚动。
请写下一段代码
...全文
47
23
打赏
收藏
连问几篇,都没有人回答。请高手帮忙。(思归,班门斧)请进
请问二个richTextBox的竖直滚动条如何同步的滚动。 请写下一段代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
C#.NET学习好资料-编程常用功能及代码的总结与收藏
1.打开新的窗口并传送参数: 2 2.为按钮添加对话框 2 3.删除表格选定记录 2 4.删除表格记录警告 2 5.点击表格行链接另一页 3 6.表格超连接列传递参数 4 7.表格点击改变颜色 4 8.关于日期格式 4 9.获取错误信息并到指定页面 5 10.清空Cookie 5 11.自定义异常处理 5 12.Panel 横向滚动,纵向自动扩展 8 13.回车转换成Tab 9 14.DataGrid超级连接列 9 15.DataGrid行随鼠标变色 9 16.模板列 9 17.数字格式化 10 18.日期格式化 10 19.如何设定全局变量 11 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口? 11 22.读取DataGrid控件TextBox值 12 23.
思
归(DataGrid,3个模板列,数量,单价、总数) 12 24.datagrid选定比较底下的行时,为什么总是刷新一下,刚才选定的行因屏幕的关系就看不到了 14 25.在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ? 14 26.对话框 14 27.
用.Net的File控件上传文件的解决方案
在遍历了csdn中所有关于上传大文件的帖子以后,写了这篇垃圾。(:-)) 上传大文件,有好几种方法: 1、
思
归的HttpWorkerRequest方法,太难,看不懂:-( 2、利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的。 3、修改web.config文件,但是不能捕获错误。 4、通过ftp的方式上传。服务器需要提供ftp服务。 没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃鱼能聪明点。) 那就仔细专研第三种方式吧! 修改Webcong文件:
<httpRuntime maxRequestLeng
箫曲选集 (本人自己收集制作)
01 春江花月夜 02 妆台秋
思
03 平湖秋月 04 平沙落雁 05 梅花三弄 06 关山月 07 寒江残雪 08 凤凰台上忆吹箫 09 红楼梦引子 10 枉凝眉 11 葬花吟 12 题帕三绝 13 叹香菱 14 秋窗风雨夕 15 晴雯歌 16 红豆曲 17 好了歌 18 分骨肉 19 聪明累 20 紫菱洲歌 21 玉箫声和 22 良宵引 23 长相
思
24 彩云归 25 幽兰逢春 26 鹧鸪飞 27
思
春 28 爱尔兰画眉 29 笑傲江湖 30 君莫
思
归 31 静夜
思
32 蕉石鸣琴 33 回梦游仙 34 沧海一声笑 35 流水 36 荷塘月色 附录:箫指法图
交通灯程序
欧赔,可及显卡及库扫ois撒该刷卡机uoi发哦iuusuaghpofhpoi 手机卡该快叫哈克 傻瓜i还家阿哥撒娇噶久客
思
归n
ASP.net 动态加载控件时一些问题的总结
1 、在使用LoadControl加载控件后,用户控件中的某些控件不再响应事件。 这个问题主要是由于将控件加载放在if (!Page.IsPostBack)之内引起的,放在外面即可。在
思
归的blog上对此问题
进
行了详细的说明。 2、用户控件中某些控件的响应出现问题,如某个按钮第一次选择时不触发CLICK事件,第二次可以了。 这是由于没有给控件设置ID引起的,控件ID的作用在下面详细讲述。 如 代码如下:Control userControl=(Control)Page.LoadControl(“Test.ascx”); userControl.ID=“Test”; AddControl(us
C#
110,567
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章