透明,点击形式,但可以通过标题栏移动

时间:2014-10-28 15:47:30

标签: c# winforms

我选择了一些代码,通过代码实现了Topmost,Transparent和Click-While表单:

public enum GWL
{
    ExStyle = -20
}

public enum WS_EX
{
    Transparent = 0x20,
    Layered = 0x80000
}

public enum LWA
{
    ColorKey = 0x1,
    Alpha = 0x2
}

[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern int GetWindowLong(IntPtr hWnd, GWL nIndex);

[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLong(IntPtr hWnd, GWL nIndex, int dwNewLong);

[DllImport("user32.dll", EntryPoint = "SetLayeredWindowAttributes")]
public static extern bool SetLayeredWindowAttributes(IntPtr hWnd, int crKey, byte alpha, LWA dwFlags);

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    int wl = GetWindowLong(this.Handle, GWL.ExStyle);
    wl = wl | 0x80000 | 0x20;
    SetWindowLong(this.Handle, GWL.ExStyle, wl);
    SetLayeredWindowAttributes(this.Handle, 0, 128, LWA.Alpha);
}

这里的问题,所有形式都是不能点击它(因为点击代码),如何做Click-though表格但标题栏除外(用户可以点击标题栏将表格移动到其他位置)?

我有一个方法,这个代码可以解决我的问题(Click-though),但是表单中的Text没有它的不透明度,而标题栏也没有不透明度。

this.BackColor = Color.Magenta;
  this.TransparencyKey = Color.Magenta;

0 个答案:

没有答案