मेरे पास एक पैनल MessagesPanel
है जिसमें डेटाबेस से पुनर्प्राप्त संदेशों को शामिल किया गया है। मैं foreach
लूप का उपयोग कर संदेशों पर जाता हूं। लूप में, मैं एक फंक्शन AddMessageToPanel
कहता हूं जो संदेश की जानकारी और सामग्री के साथ पैनल में GroupBox
गतिशील रूप से जोड़ता है। संदेश सबसे पुराने, ऊपर से नीचे (व्हाट्सएप की तरह) के लिए सबसे पुराना पुनर्प्राप्त किया जाता है। पैनल AutoScroll=true
पर सेट है, और मैं इसे नवीनतम संदेश पर बहुत नीचे स्क्रॉल करना चाहता हूं। मैं उन समाधानों की कोशिश की:सी # में नीचे पैनल को स्क्रॉल कैसे करें?
उनमें से कोई भी मेरे लिए काम किया। पैनल शीर्ष पर स्क्रॉल बार के साथ, वही दिखता है।
विशेष रूप से, मैं निम्नलिखित कोड की कोशिश की है:
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
नीचे सभी तरह से स्क्रॉल करने के लिए करना चाहते हैं:
यहाँ मेरी कार्य है। यह कैसे करना है? धन्यवाद!
'ScrollControlIntoView' को कॉल करने का प्रयास करें जिसे आपने अंतिम बार जोड़ा था। पसंदीदा रूप से 'Form.Shown' ईवेंट से पहले नहीं। – Sinatr