gpt4 book ai didi

c# - 如何创建属于标签页的一组控件的全屏 View

转载 作者:行者123 更新时间:2023-12-05 09:25:17 25 4
gpt4 key购买 nike

我想知道创建标签页控件的全屏 View 的正确方法是什么。此页面有其他控件,并且该控件有各种已订阅的事件。我正在尝试创建一个新的全屏表单并将选项卡的所有控件复制到该表单,但是使用这种方法我需要将每个控件重新订阅到相应的处理程序。如果我只添加引用,订阅仍然存在,但当全屏表单关闭时,引用的复制控件也会丢失。

最佳答案

这可以通过 Winforms 对重新设置控件父级的支持优雅地完成。您可以将其移动到全屏显示的临时表单。所有正常的事件处理程序仍然照常工作。这是一个示例实现,它适用于任何控件:

    public static void ShowFullScreen(Control ctl) {
// Setup host form to be full screen
var host = new Form();
host.FormBorderStyle = FormBorderStyle.None;
host.WindowState = FormWindowState.Maximized;
host.ShowInTaskbar = false;
// Save properties of control
var loc = ctl.Location;
var dock = ctl.Dock;
var parent = ctl.Parent;
var form = parent;
while (!(form is Form)) form = form.Parent;
// Move control to host
ctl.Parent = host;
ctl.Location = Point.Empty;
ctl.Dock = DockStyle.Fill;
// Setup event handler to restore control back to form
host.FormClosing += delegate {
ctl.Parent = parent;
ctl.Dock = dock;
ctl.Location = loc;
form.Show();
};
// Exit full screen with escape key
host.KeyPreview = true;
host.KeyDown += (KeyEventHandler)((s, e) => {
if (e.KeyCode == Keys.Escape) host.Close();
});
// And go full screen
host.Show();
form.Hide();
}

示例用法:

    private void button1_Click(object sender, EventArgs e) {
ShowFullScreen(tabControl1);
}

关于c# - 如何创建属于标签页的一组控件的全屏 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com