Form 的 TextBox 和 Treeview 的滚动条

本文介绍如何通过编程方式使TextBox的滚动条始终保持在文本末尾,以及如何让Treeview的滚动条自动定位到顶部的方法。对于TextBox,可以通过设置SelectionStart和ScrollToCaret属性实现;对于Treeview,则可以通过获取TopNode并调用EnsureVisible方法来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TextBox滚动条自动处于最下方 

textBox1.SelectionStart = textBox1.Text.Length;
textBox1.SelectionLength 
= 0;
textBox1.ScrollToCaret();

Treeview滚动条自动处于最上方

TreeNode node = trvItems.TopNode;
            
if (node != null)
            {
                  node.EnsureVisible();
            }


using System; using System.Windows.Forms; namespace KnowledgeTreeEditor { public partial class MainForm : Form { private ComboBox comboBoxSubjects; private TextBox textBoxName, textBoxContent; private Button buttonSave; private TreeNode selectedNode; public MainForm() { InitializeComponent(); InitializeCustomControls(); InitializeKnowledgeTree(); } private void InitializeCustomControls() { // 设置 TreeView treeView1.Dock = DockStyle.Left; treeView1.Width = 250; treeView1.AfterSelect += TreeView1_AfterSelect; // 布局 Panel Panel panel = new Panel(); panel.Dock = DockStyle.Fill; this.Controls.Add(panel); // 知识点名称 Label labelName = new Label() { Text = "知识点名称:" }; textBoxName = new TextBox() { Dock = DockStyle.Top, Width = 200 }; // 知识点内容 Label labelContent = new Label() { Text = "知识点内容:" }; textBoxContent = new TextBox() { Dock = DockStyle.Top, Multiline = true, Height = 100 }; // 所属学科 Label labelSubject = new Label() { Text = "所属学科:" }; comboBoxSubjects = new ComboBox() { Dock = DockStyle.Top }; comboBoxSubjects.Items.AddRange(new string[] { "计算机科学", "数学", "物理", "化学" }); // 保存按钮 buttonSave = new Button() { Text = "保存", Dock = DockStyle.Top }; buttonSave.Click += ButtonSave_Click; // 添加控件到 Panel panel.Controls.Add(buttonSave); panel.Controls.Add(comboBoxSubjects); panel.Controls.Add(labelSubject); panel.Controls.Add(textBoxContent); panel.Controls.Add(labelContent); panel.Controls.Add(textBoxName); panel.Controls.Add(labelName); } private void InitializeKnowledgeTree() { TreeNode root = new TreeNode("知识体系"); TreeNode csNode = new TreeNode("编程语言"); csNode.Nodes.Add(new TreeNode("C#")); csNode.Nodes.Add(new TreeNode("Python")); TreeNode mathNode = new TreeNode("数据结构"); mathNode.Nodes.Add(new TreeNode("数组")); mathNode.Nodes.Add(new TreeNode("链表")); root.Nodes.Add(csNode); root.Nodes.Add(mathNode); treeView1.Nodes.Add(root); } private void TreeView1_AfterSelect(object sender, TreeViewEventArgs e) { selectedNode = e.Node; // 自动填充表单字段 textBoxName.Text = e.Node.Text; textBoxContent.Text = e.Node.Tag is string tag ? tag : ""; comboBoxSubjects.SelectedItem = e.Node.Name; } private void ButtonSave_Click(object sender, EventArgs e) { if (selectedNode != null) { selectedNode.Text = textBoxName.Text; selectedNode.Tag = textBoxContent.Text; selectedNode.Name = comboBoxSubjects.SelectedItem?.ToString(); MessageBox.Show("保存成功!"); } else { MessageBox.Show("请先选择一个知识点节点。"); } } } }优化这段代码
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值