以下是一个示例代码,演示了如何使用 UserControl 在 C# 中切换页面后将焦点设置到最上方:

using System;
using System.Windows.Forms;

namespace UserControlExample
{
    public partial class MainForm : Form
    {
        private UserControl1 userControl1;
        private UserControl2 userControl2;

        public MainForm()
        {
            InitializeComponent();

            userControl1 = new UserControl1();
            userControl2 = new UserControl2();

            // 将UserControl1添加到主窗体上
            userControl1.Dock = DockStyle.Fill;
            Controls.Add(userControl1);

            // 注册UserControl2的事件
            userControl2.PageShown += UserControl2_PageShown;
        }

        private void UserControl2_PageShown(object sender, EventArgs e)
        {
            // 当UserControl2页面显示时,将焦点设置到最上方
            userControl2.FocusTop();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 切换到UserControl1页面
            Controls.Remove(userControl2);
            Controls.Add(userControl1);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 切换到UserControl2页面
            Controls.Remove(userControl1);
            Controls.Add(userControl2);
        }
    }

    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
    }

    public partial class UserControl2 : UserControl
    {
        public event EventHandler PageShown;

        public UserControl2()
        {
            InitializeComponent();
        }

        public void FocusTop()
        {
            // 将焦点设置到最上方的控件上
            textBox1.Focus();
        }

        private void UserControl2_VisibleChanged(object sender, EventArgs e)
        {
            if (Visible)
                PageShown?.Invoke(this, EventArgs.Empty);
        }
    }
}

在上述示例中,MainForm是主窗体,包含了两个UserControlUserControl1UserControl2。当点击button1时,切换到UserControl1页面;当点击button2时,切换到UserControl2页面。

UserControl2中定义了一个PageShown事件,当该页面显示时触发该事件。在MainForm中订阅了该事件,并在事件处理程序中调用了userControl2.FocusTop()方法,将焦点设置到最上方的控件上。

UserControl2FocusTop方法将焦点设置到了textBox1上,你可以根据实际情况修改为你想要设置焦点的控件。

请注意,示例代码中省略了控件的布局和事件处理的代码,你可能需要根据自己的需求进行调整。

C# UserControl 切换页面后将焦点设置到最上方

原文地址: https://www.cveoy.top/t/topic/p25s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录