[英]C# Windows Forms - Updating toolStripLabel text returns auto-scrollable panel to top
我設置了以下表格:
http://i.imgur.com/BKBGbGw.png (由於此帳戶是新帳戶,我無法發布圖片)
每當我更新帶下划線的ToolStripLabel的文本時,滾動條就會返回頂部,如下所示:
http://i.imgur.com/OVPzDdS.png
這是編輯ToolStripLabel.Text的代碼:
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
控件可能會更好地為您工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.