c# Windows窗体-更新toolStripLabel文本返回可自动滚动面板到顶部
本文关键字:滚动 顶部 返回 窗体 Windows 更新 文本 toolStripLabel | 更新日期: 2023-09-27 18:04:00
我设置了以下表单:
https://i.stack.imgur.com/CuwCP.png(我不能发布图片,因为这个帐户是新的)
每当我更新带下划线的ToolStripLabel文本时,滚动条就会返回顶部,如下所示:
https://i.stack.imgur.com/9yZu3.png 这是编辑ToolStripLabel的代码。文本:private void OnTimedEvent(object source, EventArgs e)//requests data
{
try
{
if (commTool != null)
{
pollTimer.Stop();
commTool.Poll();
writeRequests(commTool.PollCount.ToString());
if (!stopTimer)
{
pollTimer.Start();
}
if (errorRate < 0.25)
{
setColour(Color.Green);
}
else if (errorRate > 0.25 && errorRate < 0.5)
{
setColour(Color.GreenYellow);
}
else if (errorRate > 0.5 && errorRate < 0.75)
{
setColour(Color.Yellow);
}
else
{
setColour(Color.Red);
}
}
else
{
Console.WriteLine("Error MainMenu.cs, OnTimedEvent(): commTool = null");
}
}
catch (Exception ex)
{
Console.WriteLine("Error MainMenu.cs, OnTimedEvent(): " + ex.ToString());
}
}
public void writeRequests(string pollCount)
{
requests = commTool.PollCount;
if (statusBar.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(writeRequests);
Invoke(d, new object[] { pollCount });
}
else
{
tsLblRequests.Text = "Requests: " + pollCount;
}
}
我添加了复选框,现在我可以重现这种行为。首先我认为这是因为复选框在复选状态改变时聚焦了,当然,面板会自动滚动以显示聚焦的控件。但后来我发现,它只会滚动,如果我改变ToolStripLabel文本以及,没有检查InvokeRequired
属性。
我看到你已经调用时,更改tsLblRequests的文本,但可能有一些其他标签,这是需要调用。我想可能是这样。
如果不是这种情况,那么您可以尝试调整滚动位置以显示panel1.ScrollControlIntoView(label1)
的特定控制。
如果ScrollControlIntoView
方法不够灵活,那么VScrollBar
控制可能更适合您。