我想知道创建选项卡页控件全屏视图的正确方法是什么。此页具有其他控件,并且该控件具有订阅的各种事件。我尝试创建一个新的全屏表单,并将选项卡的所有控件复制到该表单,但使用这种方法时,我需要将每个控件重新订阅到相应的处理程序。如果我只添加引用,订阅仍然存在,但是当fullscreen窗体关闭时,引用的复制控件也会丢失。
发布于 2011-01-07 12:48:10
这可以通过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);
}https://stackoverflow.com/questions/4621443
复制相似问题