C# UserControl 切换页面后将焦点设置到最上方
以下是一个示例代码,演示了如何使用 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是主窗体,包含了两个UserControl:UserControl1和UserControl2。当点击button1时,切换到UserControl1页面;当点击button2时,切换到UserControl2页面。
UserControl2中定义了一个PageShown事件,当该页面显示时触发该事件。在MainForm中订阅了该事件,并在事件处理程序中调用了userControl2.FocusTop()方法,将焦点设置到最上方的控件上。
UserControl2的FocusTop方法将焦点设置到了textBox1上,你可以根据实际情况修改为你想要设置焦点的控件。
请注意,示例代码中省略了控件的布局和事件处理的代码,你可能需要根据自己的需求进行调整。
原文地址: https://www.cveoy.top/t/topic/p25s 著作权归作者所有。请勿转载和采集!