asp:Panel中vertical ScrollBars保持位置的一个解决办法

asp:Panel可以在网页中画一块来显示数据,若显示全部数据所需要的面积比asp:Panel所分配的面积要大的话,就会出现滚动条(前提是asp:Panel的属性ScrollBars被赋值成vertical或horizontal,或者两者),此时,新的问题又出现了,就是在asp:Panel的内部的操作(比如单击某个控件)进行后,滚动条(若有的话)就会回到初始状态(水平滚动条回到最左边,垂直滚动条会回到最上端),若所需单击的控件在asp:Panel的最下端的话,则在每次单击之前,就需要先滚动滚动条,找到控件,然后再单击,这样UI,很明显不是一个友好的UI,对于这个问题,当然有解决办法,其中之一,就是记录在单击时滚动条的位置,并且在单击那个控件之后,再用之前保存的位置去设置滚动条,这样,给我们的感觉就是滚动条的位置没有变动了.

实现代码如下:

 

页面代码:

 

服务器端代码:

 

在服务器端的代码中,先注册Script,然后再利用这个Script来记录和设置滚动条的位置.这样,在单击页面上的CheckBox之后,滚动条的位置还会保持在单击CheckBox之前的位置,方面我们进行下一步的操作(如比说单击GridView中下一行的CheckBox).

 

using System; using System.Collections.Generic; using System.Drawing; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Newtonsoft.Json; namespace ServerApp { public partial class ServerForm : Form { private TcpListener server; private bool isRunning = false; private List<TcpClient> clients = new List<TcpClient>(); private object lockObject = new object(); private Label[] directionStatusLabels; private Label[] directionCountdownLabels; private TextBox txtLog; private Button btnPeakMode; private Button btnNormalMode; private Button btnEmergencyMode; private Button btnStart; private Button btnStop; public ServerForm() => InitializeUI(); private void InitializeUI() { this.Text = "智能交通管理系统(服务端)"; this.Size = new System.Drawing.Size(1200, 800); // 日志文本框 txtLog = new TextBox { Multiline = true, ScrollBars = ScrollBars.Vertical, Dock = DockStyle.Bottom, ReadOnly = true, BackColor = Color.Black, ForeColor = Color.Lime, Font = new Font("Consolas", 10), Height = 300 }; // 模式按钮面板 Panel buttonPanel = new Panel { Dock = DockStyle.Top, Height = 50 }; btnPeakMode = new Button { Text = "高峰模式", Dock = DockStyle.Left, Width = 120, Font = new Font("微软雅黑", 10) }; btnPeakMode.Click += (s, e) => SendCommandToAll("{\"mode\":\"PEAK\"}"); btnNormalMode = new Button { Text = "平峰模式", Dock = DockStyle.Left, Width = 120, Font = new Font("微软雅黑", 10) }; btnNormalMode.Click += (s, e) => SendCommandToAll("{\"mode\":\"NORMAL\"}"); btnEmergencyMode = new Button { Text = "紧急模式", Dock = DockStyle.Left, Width = 120, Font = new Font("微软雅黑", 10) }; btnEmergencyMode.Click += (s, e) => SendCommandToAll("{\"mode\":\"EMERGENCY\"}"); buttonPanel.Co
最新发布
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值