gpt4 book ai didi

c# - 如何在 C# 中将面板滚动到底部?

转载 作者:太空狗 更新时间:2023-10-29 23:21:03 26 4
gpt4 key购买 nike

我有一个面板 MessagesPanel,其中包含从数据库中检索的消息。我使用 foreach 循环检查消息。在循环中,我调用了一个函数 AddMessageToPanel,它动态地将一个 GroupBox 添加到面板,其中包含消息信息和内容。消息从最旧到最新、从上到下检索(就像在 WhatsApp 中一样)。面板设置为 AutoScroll=true,我希望它滚动到最底部以显示最新消息。我尝试了这些解决方案:

  1. autoscroll panel to bottom
  2. How to Programmatically Scroll a Panel
  3. How to scroll a panel manually?

它们都不适合我。面板看起来一样,滚动条在顶部。

特别是,我尝试了以下代码:

private void MessagePanel_ControlAdded(object sender, ControlEventArgs e)
{
MessagesPanel.ScrollControlIntoView(e.Control);
}

我用事件 ControlAdded 订阅了它。

还有:

MessagesPanel.VerticalScroll.Value = MessagesPanel.VerticalScroll.Maximum

有无MessagesPanel.SuspendLayout();

这是我的功能:

private void AddMessageToPanel(string sender, string datetime, string content)
{
GroupBox groupBox = new GroupBox();
groupBox.Location = new Point(0, 120 * MessagesPanel.Controls.Count);
groupBox.RightToLeft = RightToLeft.Yes;
groupBox.Size = new Size(500, 100);
groupBox.Text = string.Format("{0} ({1})", sender, datetime);

TextBox textBox = new TextBox();
textBox.Enabled = false;
textBox.BackColor = Color.White;
textBox.BorderStyle = BorderStyle.None;
textBox.Multiline = true;
textBox.Size = new Size(495, 95);
textBox.Location = new Point(0, 20);
textBox.Text = content;

groupBox.Controls.Add(textBox);
MessagesPanel.Controls.Add(groupBox);
}

我希望 MessagesPanel 一直向下滚动。这该怎么做?谢谢!

最佳答案

作为 Beldi 解决方案的替代方案,您可以调用

MessagesPanel.AutoScrollPosition = new Point(0, MessagesPanel.DisplayRectangle.Height);

在所有控件都添加到面板之后。

关于c# - 如何在 C# 中将面板滚动到底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37117055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com