我制作了一个面板并将其设置为填满屏幕,现在我可以看到它下面的窗口,但我希望它能够点击,这意味着他们可以通过透明度单击文件或查看另一个对象的工具提示.
RE:这可能太明显了,但您是否尝试通过右键单击并选择"Send to Back"将面板发送到后面?
我的意思是像桌面或Firefox,而不是我的项目中的东西.
我正在制作一些永远在顶的吐司作为形式,当我打开它们时,我希望它们在打开时不要从其他形式中夺走焦点.我怎样才能做到这一点?
谢谢
以前当我想创建一个点击式表单时,我很想使用平台调用来设置扩展窗口样式(GetWindowLong/ SetWindowLongin user32.dll).
刚才我想让它对Alt + Tab窗口列表不可见,我发现了一个覆盖CreateParams设置扩展窗口样式而不是使用GetWindowLong/ 的示例SetWindowong.
现在我有这个:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x80000 /* WS_EX_LAYERED */ | 0x20 /* WS_EX_TRANSPARENT */ | 0x80/* WS_EX_TOOLWINDOW */;
return cp;
}
}
Run Code Online (Sandbox Code Playgroud)
现在明显的变化不需要任何平台调用.
所以我的几个问题:
Control.CreateParams出现在msdn上,并有一个操作窗口样式的例子.那么为什么StackOverflow上的一些在线"示例"和答案会告诉人们使用GetWindowLong/ SetWindowLong?所以你可以制作一个点击通过的表格......
进口:
[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
Run Code Online (Sandbox Code Playgroud)
代码:
int initialStyle = GetWindowLong(this.Handle, -20);
SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20);
Run Code Online (Sandbox Code Playgroud)
现在我将如何在运行一次代码后反转效果?
我试过这个:
int initialStyle = GetWindowLong(this.Handle, -20);
SetWindowLong(this.Handle, -20, initialStyle | 0x10000 | 0x10);
Run Code Online (Sandbox Code Playgroud)
但这没有用。
提前致谢!