C#可点击和透明表格

时间:2014-10-22 22:09:12

标签: c#

我试图做透明和可点击的表格。此表单将全屏显示。所以这个表单必须是可点击的。例如,如果桌面存在于此表单后面,我必须能够单击文件夹并打开。 如果文档存在,我必须能够更改此文档。我无法解决如何启用此功能。 我认为可以使用API​​代码完成,但我不知道哪个API。如果你能给我一些信息/链接,我会很高兴。

1 个答案:

答案 0 :(得分:0)

这很简单,无需调用任何API函数即可运行。 但它会禁止您的程序与用户进行任何交互。 对于屏幕保护程序,这没有任何意义,但至少不像你描述的那样。 规则如下:

任何不是100%透明的内容都不是点击型。

因此,您可以使用OpacityBlack BackColor轻松创建更暗的屏幕,但不会点击。

最简单的解决方案是在MouseMove上使用Timer在两种模式之间切换以重新启用保存模式,可能是这样的:

   public Form1()
    {
        InitializeComponent();

        this.Text = "";
        this.MinimizeBox = false;
        this.MaximizeBox = false;
        this.ControlBox = false;
        this.WindowState = FormWindowState.Maximized;
        switchSaverState(false);
    }

    Point lastMosePosition = Point.Empty;
    int savingWaitMinutes = 10;
    int minute = 60000;
    Timer timer1 = new Timer;

    void switchSaverState(bool saving)
    {
        if (saving)
        {
            this.BackColor = Color.Black;
            this.Opacity = 0.8;

        }
        else
        {
            this.TransparencyKey = Color.Fuchsia;
            this.BackColor = Color.Fuchsia;
            this.Opacity = 1;
            timer1.Interval = minute * savingWaitMinutes;
            timer1.Start();
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (timer1.Interval == minute * savingWaitMinutes)
        {
            timer1.Interval = 100;
            switchSaverState(true);
            lastMosePosition = Cursor.Position;
        }
        else
        {
            if (Cursor.Position != lastMosePosition)  { switchSaverState(false); }
        }
    }


    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        lastMosePosition = Cursor.Position;
        switchSaverState(false);
    }

但又一次:这就像一个屏幕保护程序,这意味着你在“保存”时无法工作!为此,请使用显示器上的控件!!