C#中让控件全屏显示的实现代码(WinForm)_C#教程

1.使用winapi “SetParent” 接口:

复制代码 代码如下:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

复制代码 代码如下:

control.Dock = DockStyle.None;
control.Left = 0;
control.Top = 0;
control.Width = Screen.PrimaryScreen.Bounds.Width;
control.Height = Screen.PrimaryScreen.WorkingArea.Height;
SetParent(control.Handle, IntPtr.Zero);

执行上面的代码后,我们的 control已经可以全屏显示了,但还有一个小问题,我们应该再提供一个功能,让用户按某个键后,退出全屏,要不然关不掉,给谁用都比较郁闷。这个时候应该给控件添加相关事件,取到键后返回。我们以Esc键为例:

复制代码 代码如下:

private void AddEventKeyUp(Control control) {
if (control != null) {
control.KeyUp += new KeyEventHandler(control_KeyUp);
foreach (Control c in control.Controls) {// 需要给子控件也添加上,否则有可能取不到。
AddEventKeyUp(c);
}
}
}
void control_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Escape) {
if (control != null) {
SetParent(control.Handle, 原来的parent.Handle);
control.Dock = DockStyle.Fill;
}
}
}

修改后的代码如下:

复制代码 代码如下:

control.Dock = DockStyle.None;
control.Left = 0;
control.Top = 0;
control.Width = Screen.PrimaryScreen.Bounds.Width;
control.Height = Screen.PrimaryScreen.WorkingArea.Height;
AddEventKeyUp(control);
control.Focus();// 获得焦点,否则也得不到按键
SetParent(control.Handle, IntPtr.Zero);

2.新建一个窗口,设置 FormBorderStyle为None,WindowState为Maximized,TopMost为True。然后具体代码如下:

复制代码 代码如下:

AddEventKeyUp(control);
原来的parent.Controls.Clear();
frmFullscreen frm = new frmFullscreen();
frm.Controls.Add(control);
frm.ShowDialog();

复制代码 代码如下:

private void AddEventKeyUp(Control control) {
if (control != null) {
control.KeyUp += new KeyEventHandler(control_KeyUp);
foreach (Control c in control.Controls) {
AddEventKeyUp(c);
}
}
}
void control_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Escape) {
if (control != null) {
if (frm != null) {
frm.Controls.Clear();
原来的parent.Controls.Add(control);// 这里不能和下面的Close顺序错了,要不然会引起错误,因为Close后把控件销毁了。
frm.Close();
frm = null;
}
}
}
}

经过实际使用验证,第二种方法很好,没有任何问题。只是需要多开一个窗口。第一种方法有点小问题,就是如果控件上有右键菜单什么的,一调用 会跑到主界面去了。好像鼠标有时候也不太灵。
作者:夏荣全
邮箱:lyout(at)163.com

时间: 2024-10-12 04:48:22

C#中让控件全屏显示的实现代码(WinForm)_C#教程的相关文章

C#中让控件全屏显示的实现代码

1.使用winapi "SetParent" 接口: 复制代码代码如下: [DllImport("user32.dll", SetLastError = true)]  static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);  复制代码代码如下: control.Dock = DockStyle.None;  control.Left = 0;  control.Top = 0;

bootstrap中日历控件datepicker无法显示

问题描述 bootstrap中日历控件datepicker无法显示 报错 $(...).datepicker is not a function 一直出现这个问题,导致日历控件点不出来 <!-- Jquery 插件 --> <script type="text/javascript" src="${pageContext.request.contextPath}/include/javascript/jquery/jquery-1.11.3.min.js&q

wpf中添加控件怎么不显示

问题描述 wpf中添加控件怎么不显示 新人求指导,代码如下,TextBlock和Button不显示 <Window x:Class="计算器界面.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="计算器&

在Word2003中打开和关闭“全屏显示”视图

  在Word2003文档"全屏显示"视图中,标题栏.菜单栏.工具栏.状态栏以及其他的元素都被隐藏起来了,从而使有限的屏幕空间可以更多地显示文档内容.在该视图方式中用户可以输入和编辑文本,也可以选择常用的键盘命令.为了扩大Word2003文档窗口编辑区域,用户可以依次单击"视图"→"全屏显示"菜单命令切换到"全屏显示"视图,如图1所示. 图1 Word2003"全屏显示"视图 在Word2003文档&quo

c#中什么控件既能显示文字又能显示图片?

问题描述 我做的qq如何把表情添加到控件中? 解决方案 解决方案二:textbox吧,文字显示在框内,图片就用做背景.解决方案三:winform,richtextboxwebform,htmlediter解决方案四:引用楼主renmuqiang的回复: 我做的qq如何把表情添加到控件中? 多了,RTB,listview都可以解决方案五:RichTextBox可以但是有些小问题还是挺蛋疼的..比如对gif的支持就不是很好..解决方案六:winformorwebform?解决方案七:ToolStri

C#中DataGridView控件的行头显示序号的宽度适中也就是RowHearWidth属性 我想让行头显示是左对齐显示序号

问题描述 举例*那行我想设置左对齐并且能显示序号如1~10*行属性宽度可以设置但是设置后*行里面的序号显示不出来求C#的源代码 解决方案 解决方案二:一搜一大堆.

JS控件ASP.NET的treeview控件全选或者取消(示例代码)_javascript技巧

复制代码 代码如下: <script language="javascript">   /*   函数名称:CheckNode(currentNode).ParentNode(currentNode).ChildNode(currentNode)   函数功能:实现带checkbox的treeview中   1.选中父结点其子结点也全部选中   2.取消全部子结点的选择后,父结点的选择也随之取消   使用方法:1.在<head></head>中间添加

MFC框架程序中全屏显示特性的实现

在开发图像显示程序以及视频应用程序时,常常需要全屏显示特性,比如ACD See和豪杰解霸等应用都有全屏显示功能.本文将介绍如何在MFC框架程序中实现视图的全屏显示,也就是说将标题.菜单.工具栏.状态栏以及窗口的所有边框全部被隐藏,视图充满整个屏幕.并提供全屏显示与框架窗口之间的快捷切换操作. 大家知道,在MFC框架中并没有提供现成的类或者函数来实现全屏显示特性,至少我到目前为止是没有发现.但是要实现这个特性也并不难.其基本思路是调整主窗口的大小和位置,使视图的显示充满屏幕.它需要以屏幕左上角为原

VC对话框全屏显示及相应控件位置改变

一.简单对话框全屏显示方法 在OnInitDialog()中任意加入: 1.ModifyStyle(WS_CAPTION,0,0); //如果不想去掉标题栏,去掉该句. SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2.ShowWindow(SW_SHOWMAXIMIZED); 二.复杂一点的对话框全屏显示方法,随屏幕的分辩率而调节 void CMainFrame::OnFullScreen() { GetWindowPlacement(&m_OldWndP