首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建属于选项卡页的一组控件的全屏视图

如何创建属于选项卡页的一组控件的全屏视图
EN

Stack Overflow用户
提问于 2011-01-07 08:26:52
回答 1查看 2.7K关注 0票数 2

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

EN

Stack Overflow用户

回答已采纳

发布于 2011-01-07 12:48:10

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

代码语言:javascript
运行
复制
    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();
    }

示例用法:

代码语言:javascript
运行
复制
    private void button1_Click(object sender, EventArgs e) {
        ShowFullScreen(tabControl1);
    }
票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4621443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档