如何在 .NET CF(2.0 or above) 实现全屏界面?

yctin 2010-03-09 12:05:09
如题~如何建立一个最上层全屏的Panel?

总是在CSDN答问题, 分没处用给大家赚一下
...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-03-25
  • 打赏
  • 举报
回复
全屏后。你肯定不希望再有其他的程序来打扰。那最好就是用SetSystemParameter来设置WorkPlace,让工作区域占满屏幕,当然,退出时候要还原。
所以完美的全屏操作,应该包含:
1.隐藏任务栏
2.设置屏幕尺寸为工作尺寸
3.设置本窗体为最大化
兔子-顾问 2010-03-25
  • 打赏
  • 举报
回复
上面是pc的,ce的只要把user32.dll替换为coredll.dll就可以了。刚发帖时候忘记修改了。
兔子-顾问 2010-03-25
  • 打赏
  • 举报
回复
实现的部分:

/// <summary>
/// 设置全屏或这取消全屏
/// </summary>
/// <param name="fullscreen">true:全屏 false:恢复</param>
/// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>
/// <returns>设置结果</returns>
public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)
{
int Hwnd = FindWindow("Shell_TrayWnd", null);


if (Hwnd == 0) return false;

if (fullscreen)
{
ShowWindow(Hwnd, SW_HIDE);
Rectangle rectFull = Screen.PrimaryScreen.Bounds;
SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get
SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//set
}
else
{
ShowWindow(Hwnd, SW_SHOW);
SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);
}
return true;
}

public const int SPIF_UPDATEINIFILE = 0x1;
public const int SPI_SETWORKAREA = 47;
public const int SPI_GETWORKAREA = 48;
public const int SW_SHOW = 5;
public const int SW_HIDE = 0;
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
private static extern int SystemParametersInfo(
int uAction,
int uParam,
ref Rectangle lpvParam,
int fuWinIni
);
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
public static extern int ShowWindow(int hwnd, int nCmdShow);


调用的部分:

bool fullnow = false;
Rectangle rect = new Rectangle();
private void Form1_DoubleClick(object sender, EventArgs e)
{
fullnow = !fullnow;
SetFullScreen(fullnow, ref rect);
this.FormBorderStyle = fullnow ? FormBorderStyle.None : FormBorderStyle.FixedDialog;
this.WindowState = fullnow ? FormWindowState.Maximized : FormWindowState.Normal;
}


没实际经验的人请不好跟帖说最大化就可以了。net cf运行在wince,mobile的效果不同,wince下只要设置最大化就可以,但如果是mobile和pocket pc,是不行的。

无知不是错,不要误人子弟。谢谢合作。
yctin 2010-03-25
  • 打赏
  • 举报
回复
真的没人答了? 要用API的啊
zetee 2010-03-10
  • 打赏
  • 举报
回复
Form2 f = new Form2();
f.FormBorderStyle = FormBorderStyle.None;
f.Size = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
f.Show();

这个可以实现。
yctin 2010-03-10
  • 打赏
  • 举报
回复
没人了?

yctin 2010-03-09
  • 打赏
  • 举报
回复
提醒一下: 是 .NET CF / .NET Compact Framework
woaizhonguoren 2010-03-09
  • 打赏
  • 举报
回复
我知道怎么把窗体显示在最上层,连桌面的工具栏都能盖住,只有 任务管理器盖不住,(可以把打开任务管理器的的方法给禁了) 还搞笑的是,我把那个窗体的调成透明的,我发给别人,别人一点,就全屏。他看到下面的东西,拼命的点,就是没效果。 他以为我把他鼠标禁了,其实我那里有那么厉害哦 哈哈.............
不知道你要把panel 全屏显示最上层要 个什么效果
特别安静 2010-03-09
  • 打赏
  • 举报
回复
winform 很容易的
webform 的话,你不可能跑到别人浏览器外面去撒
特别安静 2010-03-09
  • 打赏
  • 举报
回复
winform还是webform?
myrroom 2010-03-09
  • 打赏
  • 举报
回复
膜拜大牛,呵呵
yctin 2010-03-09
  • 打赏
  • 举报
回复
f050304004 2010-03-09
  • 打赏
  • 举报
回复
引用 4 楼 woaizhonguoren 的回复:
我知道怎么把窗体显示在最上层,连桌面的工具栏都能盖住,只有 任务管理器盖不住,(可以把打开任务管理器的的方法给禁了) 还搞笑的是,我把那个窗体的调成透明的,我发给别人,别人一点,就全屏。他看到下面的东西,拼命的点,就是没效果。 他以为我把他鼠标禁了,其实我那里有那么厉害哦 哈哈.............
不知道你要把panel 全屏显示最上层要 个什么效果

这个满屏的效果,是刚好满屏,还是定义了极大的高宽
yctin 2010-03-09
  • 打赏
  • 举报
回复

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧