我正在尝试在启动时启动一个表单,并将其作为我的应用程序的整个运行时间的背景。基本上我想隐藏所有桌面图标并具有空白背景。此外,当用户单击某些按钮时,我希望更改表单BackColor。
我搜索了一堆,我一直找到一半的解决方案。这是我到目前为止所尝试的:
创建了一个覆盖WndProc事件的BackBaseForm,如果它是WM_WINDOWPOSCHANGING
,我不会调用base.WndProc(ref m)
而是发送以下消息:
SetWindowPos(Handle, new IntPtr(1), 0, 0, this.width, this.height, SWP_NOZORDER);
然而,每当我点击表格时,它仍会将其带到前面。我还尝试创建一个WINDOWPOS
结构,编组指向结构的指针,然后修改结构。我认为这不会改变消息中的实际lParam
。
答案 0 :(得分:0)
创建背景表单并将“主”表单的所有者表单设置为该背景表单。例如:
frmBackground backgroundForm = new frmBackground();
frmMain mainForm = new frmMain();
mainForm.Owner = backgroundForm;
backgroundForm.Show();
mainForm.Show();
答案 1 :(得分:0)
将frmBackground.Enabled
设为false。
在你的主体中:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var bg = new Form();
bg.WindowState = FormWindowState.Maximized;
bg.ShowInTaskbar = false;
bg.FormBorderStyle = FormBorderStyle.None;
bg.Show();
bg.Enabled = false;
this.Owner = bg; // optional - see below
}
如果你这样做:
this.Owner = f;
然后当您单击背景表单时,您的主表单边框将闪烁(至少在Windows 7中,我不确定其他版本)。无论哪种方式,将Enabled设置为false都可以。但是当你点击背景表格时,你会发出一声哔哔声,这可能很烦人。可能有一些方法可以阻止它。