Veritabanından alınan iletileri içeren bir panelim var MessagesPanel
. foreach
döngüsünü kullanarak mesajların üzerinden geçiyorum. Döngüde, mesaj bilgileri ve içeriği ile panele bir GroupBox
dinamik olarak ekleyen AddMessageToPanel
işlevini çağırıyorum. Mesajlar en eskiden en yeniye, yukarıdan aşağıya (WhatsApp'ta olduğu gibi) alınır. Panel AutoScroll=true
olarak ayarlanmıştır ve en alttaki mesaja en alta kaydırılmasını istiyorum. Ben bu çözümleri denedim: BunlardanBir paneli C# içine nasıl kaydırılır?
Yok benim için çalıştı. Panel, üstte kaydırma çubuğu ile aynı görünüyor. Özellikle
, aşağıdaki kodu denediniz:
private void MessagePanel_ControlAdded(object sender, ControlEventArgs e)
{
MessagesPanel.ScrollControlIntoView(e.Control);
}
ve ben olayı ControlAdded
ile abone.
Ve ayrıca: With ve MessagesPanel.SuspendLayout()
olmadan
MessagesPanel.VerticalScroll.Value = MessagesPanel.VerticalScroll.Maximum
;
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);
}
Ben MessagesPanel
aşağı tüm yönlü kaydırma istiyorum:
İşte benim fonksiyonudur. Bu nasıl yapılır? Teşekkürler!
En son eklediğiniz öğenin örneğini ileterek ScrollControlIntoView' öğesini aramaya çalışın. Tercihen, Form.Shown' olayından daha erken değil. – Sinatr